Create public $.datepicker.formatTime method
This commit is contained in:
parent
e2faad1db2
commit
27a426e3eb
1 changed files with 54 additions and 33 deletions
87
jquery-ui-timepicker-addon.js
vendored
87
jquery-ui-timepicker-addon.js
vendored
|
@ -818,7 +818,8 @@ $.extend(Timepicker.prototype, {
|
|||
}
|
||||
if (o.ampm) this.ampm = ampm;
|
||||
|
||||
this._formatTime();
|
||||
//this._formatTime();
|
||||
this.formattedTime = $.datepicker.formatTime(this._defaults.timeFormat, this, this._defaults);
|
||||
if (this.$timeObj) this.$timeObj.text(this.formattedTime + o.timeSuffix);
|
||||
this.timeDefined = true;
|
||||
if (hasChanged) this._updateDateTime();
|
||||
|
@ -837,42 +838,14 @@ $.extend(Timepicker.prototype, {
|
|||
},
|
||||
|
||||
//########################################################################
|
||||
// format the time all pretty...
|
||||
// left for any backwards compatibility
|
||||
//########################################################################
|
||||
_formatTime: function(time, format, ampm) {
|
||||
if (ampm == undefined) ampm = this._defaults.ampm;
|
||||
_formatTime: function(time, format) {
|
||||
time = time || { hour: this.hour, minute: this.minute, second: this.second, millisec: this.millisec, ampm: this.ampm, timezone: this.timezone };
|
||||
var tmptime = (format || this._defaults.timeFormat).toString();
|
||||
|
||||
var hour = parseInt(time.hour, 10);
|
||||
if (ampm) {
|
||||
if (!$.inArray(time.ampm.toUpperCase(), this.amNames) !== -1)
|
||||
hour = hour % 12;
|
||||
if (hour === 0)
|
||||
hour = 12;
|
||||
}
|
||||
tmptime = tmptime.replace(/(?:hh?|mm?|ss?|[tT]{1,2}|[lz])/g, function(match) {
|
||||
switch (match.toLowerCase()) {
|
||||
case 'hh': return ('0' + hour).slice(-2);
|
||||
case 'h': return hour;
|
||||
case 'mm': return ('0' + time.minute).slice(-2);
|
||||
case 'm': return time.minute;
|
||||
case 'ss': return ('0' + time.second).slice(-2);
|
||||
case 's': return time.second;
|
||||
case 'l': return ('00' + time.millisec).slice(-3);
|
||||
case 'z': return time.timezone;
|
||||
case 't': case 'tt':
|
||||
if (ampm) {
|
||||
var _ampm = time.ampm;
|
||||
if (match.length == 1)
|
||||
_ampm = _ampm.charAt(0);
|
||||
return match.charAt(0) == 'T' ? _ampm.toUpperCase() : _ampm.toLowerCase();
|
||||
}
|
||||
return '';
|
||||
}
|
||||
});
|
||||
|
||||
tmptime = $.trim(tmptime);
|
||||
tmptime = $.datepicker.formatTime(tmptime, time, this._defaults);
|
||||
|
||||
if (arguments.length) return tmptime;
|
||||
else this.formattedTime = tmptime;
|
||||
},
|
||||
|
@ -956,6 +929,54 @@ $.fn.extend({
|
|||
}
|
||||
});
|
||||
|
||||
//########################################################################
|
||||
// format the time all pretty...
|
||||
// format = string format of the time
|
||||
// time = a {}, not a Date() for timezones
|
||||
// options = essentially the regional[].. amNames, pmNames, ampm
|
||||
//########################################################################
|
||||
$.datepicker.formatTime = function(format, time, options) {
|
||||
options = options || {};
|
||||
options = $.extend($.timepicker._defaults, options);
|
||||
time = $.extend({hour:0, minute:0, second:0, millisec:0, timezone:'+0000'}, time);
|
||||
|
||||
var tmptime = format;
|
||||
var ampmName = options['amNames'][0];
|
||||
|
||||
var hour = parseInt(time.hour, 10);
|
||||
if (options.ampm) {
|
||||
if (hour > 11){
|
||||
ampmName = options['pmNames'][0];
|
||||
if(hour > 12)
|
||||
hour = hour % 12;
|
||||
}
|
||||
if (hour === 0)
|
||||
hour = 12;
|
||||
}
|
||||
tmptime = tmptime.replace(/(?:hh?|mm?|ss?|[tT]{1,2}|[lz])/g, function(match) {
|
||||
switch (match.toLowerCase()) {
|
||||
case 'hh': return ('0' + hour).slice(-2);
|
||||
case 'h': return hour;
|
||||
case 'mm': return ('0' + time.minute).slice(-2);
|
||||
case 'm': return time.minute;
|
||||
case 'ss': return ('0' + time.second).slice(-2);
|
||||
case 's': return time.second;
|
||||
case 'l': return ('00' + time.millisec).slice(-3);
|
||||
case 'z': return time.timezone;
|
||||
case 't': case 'tt':
|
||||
if (options.ampm) {
|
||||
if (match.length == 1)
|
||||
ampmName = ampmName.charAt(0);
|
||||
return match.charAt(0) == 'T' ? ampmName.toUpperCase() : ampmName.toLowerCase();
|
||||
}
|
||||
return '';
|
||||
}
|
||||
});
|
||||
|
||||
tmptime = $.trim(tmptime);
|
||||
return tmptime;
|
||||
}
|
||||
|
||||
//########################################################################
|
||||
// the bad hack :/ override datepicker so it doesnt close on select
|
||||
// inspired: http://stackoverflow.com/questions/1252512/jquery-datepicker-prevent-closing-picker-when-clicking-a-date/1762378#1762378
|
||||
|
|
Loading…
Reference in a new issue