|
983 | 983 | /*
|
984 | 984 | * Public utility to parse time
|
985 | 985 | */
|
986 |
| - $.datepicker.parseTime = function(timeFormat, timeString, options) { |
987 |
| - |
988 |
| - // pattern for standard and localized AM/PM markers |
989 |
| - var getPatternAmpm = function(amNames, pmNames) { |
990 |
| - var markers = []; |
991 |
| - if (amNames) { |
992 |
| - $.merge(markers, amNames); |
993 |
| - } |
994 |
| - if (pmNames) { |
995 |
| - $.merge(markers, pmNames); |
996 |
| - } |
997 |
| - markers = $.map(markers, function(val) { |
998 |
| - return val.replace(/[.*+?|()\[\]{}\\]/g, '\\$&'); |
999 |
| - }); |
1000 |
| - return '(' + markers.join('|') + ')?'; |
1001 |
| - }; |
| 986 | + $.datepicker.parseTime = function(timeFormat, timeString, options) { |
| 987 | + var o = extendRemove(extendRemove({}, $.timepicker._defaults), options || {}); |
1002 | 988 |
|
1003 |
| - // figure out position of time elements.. cause js cant do named captures |
1004 |
| - var getFormatPositions = function(timeFormat) { |
1005 |
| - var finds = timeFormat.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|t{1,2}|z|'.*?')/g), |
1006 |
| - orders = { |
1007 |
| - h: -1, |
1008 |
| - m: -1, |
1009 |
| - s: -1, |
1010 |
| - l: -1, |
1011 |
| - t: -1, |
1012 |
| - z: -1 |
1013 |
| - }; |
| 989 | + // Strict parse requires the timeString to match the timeFormat exactly |
| 990 | + var strictParse = function(f, s, o){ |
1014 | 991 |
|
1015 |
| - if (finds) { |
1016 |
| - for (var i = 0; i < finds.length; i++) { |
1017 |
| - if (orders[finds[i].toString().charAt(0)] == -1) { |
1018 |
| - orders[finds[i].toString().charAt(0)] = i + 1; |
1019 |
| - } |
| 992 | + // pattern for standard and localized AM/PM markers |
| 993 | + var getPatternAmpm = function(amNames, pmNames) { |
| 994 | + var markers = []; |
| 995 | + if (amNames) { |
| 996 | + $.merge(markers, amNames); |
1020 | 997 | }
|
1021 |
| - } |
1022 |
| - return orders; |
1023 |
| - }; |
| 998 | + if (pmNames) { |
| 999 | + $.merge(markers, pmNames); |
| 1000 | + } |
| 1001 | + markers = $.map(markers, function(val) { |
| 1002 | + return val.replace(/[.*+?|()\[\]{}\\]/g, '\\$&'); |
| 1003 | + }); |
| 1004 | + return '(' + markers.join('|') + ')?'; |
| 1005 | + }; |
1024 | 1006 |
|
1025 |
| - var o = extendRemove(extendRemove({}, $.timepicker._defaults), options || {}); |
| 1007 | + // figure out position of time elements.. cause js cant do named captures |
| 1008 | + var getFormatPositions = function(timeFormat) { |
| 1009 | + var finds = timeFormat.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|l{1}|t{1,2}|z|'.*?')/g), |
| 1010 | + orders = { |
| 1011 | + h: -1, |
| 1012 | + m: -1, |
| 1013 | + s: -1, |
| 1014 | + l: -1, |
| 1015 | + t: -1, |
| 1016 | + z: -1 |
| 1017 | + }; |
| 1018 | + |
| 1019 | + if (finds) { |
| 1020 | + for (var i = 0; i < finds.length; i++) { |
| 1021 | + if (orders[finds[i].toString().charAt(0)] == -1) { |
| 1022 | + orders[finds[i].toString().charAt(0)] = i + 1; |
| 1023 | + } |
| 1024 | + } |
| 1025 | + } |
| 1026 | + return orders; |
| 1027 | + }; |
1026 | 1028 |
|
1027 |
| - var strictParse = function(f, s, o){ |
1028 | 1029 | var regstr = '^' + f.toString()
|
1029 | 1030 | .replace(/([hH]{1,2}|mm?|ss?|[tT]{1,2}|[lz]|'.*?')/g, function (match) {
|
1030 | 1031 | switch (match.charAt(0).toLowerCase()) {
|
|
1118 | 1119 | return false;
|
1119 | 1120 | };// end strictParse
|
1120 | 1121 |
|
| 1122 | + // First try JS Date, if that fails, use strictParse |
1121 | 1123 | var looseParse = function(f,s,o){
|
1122 | 1124 | try{
|
1123 | 1125 | var d = new Date('2012-01-01 '+ s);
|
|
1126 | 1128 | minutes: d.getMinutes(),
|
1127 | 1129 | seconds: d.getSeconds(),
|
1128 | 1130 | millisec: d.getMilliseconds(),
|
1129 |
| - timezone: d.getTimezoneOffset() |
| 1131 | + timezone: $.timepicker.timeZoneOffsetString(d) |
1130 | 1132 | };
|
1131 | 1133 | }
|
1132 | 1134 | catch(err){
|
|
0 commit comments