@@ -79,10 +79,8 @@ function Timepicker() {
79
79
separator : ' ' ,
80
80
altFieldTimeOnly : true ,
81
81
showTimepicker : true ,
82
- timezoneList : [ "-1100" , "-1000" , "-0900" , "-0800" , "-0700" , "-0600" ,
83
- "-0500" , "-0400" , "-0300" , "-0200" , "-0100" , "+0000" ,
84
- "+0100" , "+0200" , "+0300" , "+0400" , "+0500" , "+0600" ,
85
- "+0700" , "+0800" , "+0900" , "+1000" , "+1100" , "+1200" ]
82
+ timezoneIso8609 : false ,
83
+ timezoneList : null
86
84
} ;
87
85
$ . extend ( this . _defaults , this . regional [ '' ] ) ;
88
86
}
@@ -114,10 +112,7 @@ $.extend(Timepicker.prototype, {
114
112
formattedDate : '' ,
115
113
formattedTime : '' ,
116
114
formattedDateTime : '' ,
117
- timezoneList : [ "-1100" , "-1000" , "-0900" , "-0800" , "-0700" , "-0600" ,
118
- "-0500" , "-0400" , "-0300" , "-0200" , "-0100" , "+0000" ,
119
- "+0100" , "+0200" , "+0300" , "+0400" , "+0500" , "+0600" ,
120
- "+0700" , "+0800" , "+0900" , "+1000" , "+1100" , "+1200" ] ,
115
+ timezoneList : null ,
121
116
122
117
/* Override the default settings for all instances of the time picker.
123
118
@param settings object - the new settings to use as defaults (anonymous object)
@@ -164,6 +159,17 @@ $.extend(Timepicker.prototype, {
164
159
timepicker : tp_inst // add timepicker as a property of datepicker: $.datepicker._get(dp_inst, 'timepicker');
165
160
} ) ;
166
161
162
+ if ( tp_inst . _defaults . timezoneList === null ) {
163
+ var timezoneList = [ ] ;
164
+ for ( var i = - 11 ; i <= 12 ; i ++ )
165
+ timezoneList . push ( ( i >= 0 ? '+' : '-' ) + ( '0' + Math . abs ( i ) . toString ( ) ) . slice ( - 2 ) + '00' ) ;
166
+ if ( tp_inst . _defaults . timezoneIso8609 )
167
+ timezoneList = $ . map ( timezoneList , function ( val ) {
168
+ return val == '+0000' ? 'Z' : ( val . substring ( 0 , 3 ) + ':' + val . substring ( 3 ) ) ;
169
+ } ) ;
170
+ tp_inst . _defaults . timezoneList = timezoneList ;
171
+ }
172
+
167
173
tp_inst . hour = tp_inst . _defaults . hour ;
168
174
tp_inst . minute = tp_inst . _defaults . minute ;
169
175
tp_inst . second = tp_inst . _defaults . second ;
@@ -220,7 +226,7 @@ $.extend(Timepicker.prototype, {
220
226
. replace ( / s { 1 , 2 } / ig, '(\\d?\\d)' )
221
227
. replace ( / l { 1 } / ig, '(\\d?\\d?\\d)' )
222
228
. replace ( / t { 1 , 2 } / ig, '(am|pm|a|p)?' )
223
- . replace ( / z { 1 } / ig, '((\\+|-) \\d\\d\\d\\d)?' )
229
+ . replace ( / z { 1 } / ig, '(z|[-+] \\d\\d:? \\d\\d)?' )
224
230
. replace ( / \s / g, '\\s?' ) + this . _defaults . timeSuffix + '$' ,
225
231
order = this . _getFormatPositions ( ) ,
226
232
treg ;
@@ -255,7 +261,29 @@ $.extend(Timepicker.prototype, {
255
261
if ( order . m !== - 1 ) this . minute = Number ( treg [ order . m ] ) ;
256
262
if ( order . s !== - 1 ) this . second = Number ( treg [ order . s ] ) ;
257
263
if ( order . l !== - 1 ) this . millisec = Number ( treg [ order . l ] ) ;
258
- if ( order . z !== - 1 ) this . timezone = treg [ order . z ] ;
264
+ if ( order . z !== - 1 && treg [ order . z ] !== undefined ) {
265
+ var tz = treg [ order . z ] . toUpperCase ( ) ;
266
+ switch ( tz . length ) {
267
+ case 1 : // Z
268
+ tz = this . _defaults . timezoneIso8609 ? 'Z' : '+0000' ;
269
+ break ;
270
+ case 5 : // +hhmm
271
+ if ( this . _defaults . timezoneIso8609 )
272
+ tz = tz . substring ( 1 ) == '0000'
273
+ ? 'Z'
274
+ : tz . substring ( 0 , 3 ) + ':' + tz . substring ( 3 ) ;
275
+ break ;
276
+ case 6 : // +hh:mm
277
+ if ( ! this . _defaults . timezoneIso8609 )
278
+ tz = tz == 'Z' || tz . substring ( 1 ) == '00:00'
279
+ ? '+0000'
280
+ : tz . replace ( / : / , '' ) ;
281
+ else if ( tz . substring ( 1 ) == '00:00' )
282
+ tz = 'Z' ;
283
+ break ;
284
+ }
285
+ this . timezone = tz ;
286
+ }
259
287
260
288
return true ;
261
289
0 commit comments