| 3834 | } |
| 3835 | |
| 3836 | function parseDateFormat(format, val) { |
| 3837 | |
| 3838 | var tmp = []; |
| 3839 | var tmpformat = []; |
| 3840 | var prev = ''; |
| 3841 | var prevformat = ''; |
| 3842 | var allowed = { y: 1, Y: 1, M: 1, m: 1, d: 1, D: 1, H: 1, s: 1, a: 1, w: 1 }; |
| 3843 | |
| 3844 | for (var i = 0; i < format.length; i++) { |
| 3845 | |
| 3846 | var c = format[i]; |
| 3847 | |
| 3848 | if (!allowed[c]) |
| 3849 | continue; |
| 3850 | |
| 3851 | if (prev !== c) { |
| 3852 | prevformat && tmpformat.push(prevformat); |
| 3853 | prevformat = c; |
| 3854 | prev = c; |
| 3855 | } else |
| 3856 | prevformat += c; |
| 3857 | } |
| 3858 | |
| 3859 | prev = ''; |
| 3860 | |
| 3861 | for (var i = 0; i < val.length; i++) { |
| 3862 | var code = val.charCodeAt(i); |
| 3863 | if (code >= 48 && code <= 57) |
| 3864 | prev += val[i]; |
| 3865 | } |
| 3866 | |
| 3867 | prevformat && tmpformat.push(prevformat); |
| 3868 | |
| 3869 | var f = 0; |
| 3870 | for (var i = 0; i < tmpformat.length; i++) { |
| 3871 | var l = tmpformat[i].length; |
| 3872 | tmp.push(prev.substring(f, f + l)); |
| 3873 | f += l; |
| 3874 | } |
| 3875 | |
| 3876 | var dt = {}; |
| 3877 | |
| 3878 | for (var i = 0; i < tmpformat.length; i++) { |
| 3879 | var type = tmpformat[i]; |
| 3880 | if (tmp[i]) |
| 3881 | dt[type[0]] = +tmp[i]; |
| 3882 | } |
| 3883 | |
| 3884 | var h = dt.h || dt.H; |
| 3885 | |
| 3886 | if (h != null) { |
| 3887 | var ampm = val.match(REG_TIME); |
| 3888 | if (ampm && ampm[0].toLowerCase() === 'pm') |
| 3889 | h += 12; |
| 3890 | } |
| 3891 | |
| 3892 | return new Date((dt.y || dt.Y) || 0, (dt.M || 1) - 1, dt.d || dt.D || 0, h || 0, dt.m || 0, dt.s || 0); |
| 3893 | } |