Skip to content

Commit 8e43a08

Browse files
Fixes trentrichardson#432 - Improves parseDate()
1 parent d8cd2da commit 8e43a08

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

jquery-ui-timepicker-addon.js

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1607,16 +1607,24 @@
16071607
* Throws exception when date can't be parsed
16081608
* If only date is present, time substring eill be ''
16091609
*/
1610-
var splitDateTime = function(dateFormat, dateTimeString, dateSettings) {
1610+
var splitDateTime = function(dateFormat, dateTimeString, dateSettings, timeSettings) {
16111611
try {
1612-
var date = $.datepicker._base_parseDate(dateFormat, dateTimeString, dateSettings);
1612+
var date = $.datepicker._base_parseDate(dateFormat, dateTimeString, dateSettings),
1613+
separator = timeSettings && timeSettings.separator ? timeSettings.separator : $.timepicker._defaults.separator;
1614+
if (dateTimeString.indexOf(separator) > 0) {
1615+
var dta = dateTimeString.split(separator);
1616+
if (dta.length == 2) {
1617+
return dta;
1618+
}
1619+
}
1620+
16131621
} catch (err) {
16141622
if (err.indexOf(":") >= 0) {
16151623
// Hack! The error message ends with a colon, a space, and
16161624
// the "extra" characters. We rely on that instead of
16171625
// attempting to perfectly reproduce the parsing algorithm.
1618-
var dateStringLength = dateTimeString.length - (err.length - err.indexOf(':') - 2);
1619-
var timeString = dateTimeString.substring(dateStringLength);
1626+
var dateStringLength = dateTimeString.length - (err.length - err.indexOf(':') - 2),
1627+
timeString = dateTimeString.substring(dateStringLength);
16201628

16211629
return [dateTimeString.substring(0, dateStringLength), dateTimeString.substring(dateStringLength)];
16221630

@@ -1635,16 +1643,12 @@
16351643
*/
16361644
var parseDateTimeInternal = function(dateFormat, timeFormat, dateTimeString, dateSettings, timeSettings) {
16371645
var date;
1638-
var splitRes = splitDateTime(dateFormat, dateTimeString, dateSettings);
1646+
var splitRes = splitDateTime(dateFormat, dateTimeString, dateSettings, timeSettings);
16391647
date = $.datepicker._base_parseDate(dateFormat, splitRes[0], dateSettings);
16401648
if (splitRes[1] !== '') {
1641-
var timeString = splitRes[1];
1642-
var separator = timeSettings && timeSettings.separator ? timeSettings.separator : $.timepicker._defaults.separator;
1643-
if (timeString.indexOf(separator) !== 0) {
1644-
throw 'Missing time separator';
1645-
}
1646-
timeString = timeString.substring(separator.length);
1647-
var parsedTime = $.datepicker.parseTime(timeFormat, timeString, timeSettings);
1649+
var timeString = splitRes[1],
1650+
parsedTime = $.datepicker.parseTime(timeFormat, timeString, timeSettings);
1651+
16481652
if (parsedTime === null) {
16491653
throw 'Wrong time format';
16501654
}

0 commit comments

Comments
 (0)