@@ -233,9 +233,11 @@ $.extend(Timepicker.prototype, {
233
233
// parse the time string from input value or _setTime
234
234
//########################################################################
235
235
_parseTime : function ( timeString , withDate ) {
236
+ if ( ! this . inst )
237
+ this . inst = $ . datepicker . _getInst ( this . $input [ 0 ] ) ;
238
+
236
239
if ( withDate || ! this . _defaults . timeOnly )
237
240
{
238
- if ( ! this . inst ) this . inst = $ . datepicker . _getInst ( this . $input [ 0 ] ) ;
239
241
var dp_dateFormat = $ . datepicker . _get ( this . inst , 'dateFormat' ) ;
240
242
try {
241
243
var parseRes = parseDateTimeInternal ( dp_dateFormat , this . _defaults . timeFormat , timeString , $ . datepicker . _getFormatConfig ( this . inst ) , this . _defaults ) ;
@@ -250,7 +252,8 @@ $.extend(Timepicker.prototype, {
250
252
else
251
253
{
252
254
var timeObj = $ . datepicker . parseTime ( this . _defaults . timeFormat , timeString , this . _defaults ) ;
253
- $ . extend ( this , parseRes . timeObj ) ;
255
+ if ( ! timeObj ) return false ;
256
+ $ . extend ( this , timeObj ) ;
254
257
return true ;
255
258
}
256
259
} ,
@@ -851,114 +854,115 @@ $.fn.extend({
851
854
} ) ;
852
855
853
856
$ . datepicker . parseDateTime = function ( dateFormat , timeFormat , dateTimeString , dateSettings , timeSettings ) {
854
- var parseRes = parseDateTimeInternal ( dateFormat , timeFormat , dateTimeString , dateSettings , timeSettings ) ;
855
- if ( parseRes . timeObj )
856
- {
857
- var t = parseRes . timeObj ;
858
- parseRes . date . setHours ( t . hour , t . minute , t . second , t . millisec ) ;
859
- }
860
-
857
+ var parseRes = parseDateTimeInternal ( dateFormat , timeFormat , dateTimeString , dateSettings , timeSettings ) ;
858
+ if ( parseRes . timeObj )
859
+ {
860
+ var t = parseRes . timeObj ;
861
+ parseRes . date . setHours ( t . hour , t . minute , t . second , t . millisec ) ;
862
+ }
863
+
861
864
return parseRes . date ;
862
865
}
863
866
864
867
$ . datepicker . parseTime = function ( timeFormat , timeString , options ) {
865
-
866
- //########################################################################
868
+
869
+ //########################################################################
867
870
// pattern for standard and localized AM/PM markers
868
871
//########################################################################
869
- var getPatternAmpm = function ( amNames , pmNames ) {
870
- var markers = [ ] ;
871
- if ( amNames )
872
- $ . merge ( markers , amNames ) ;
873
- if ( pmNames )
874
- $ . merge ( markers , pmNames ) ;
875
- markers = $ . map ( markers , function ( val ) { return val . replace ( / [ . * + ? | ( ) \[ \] { } \\ ] / g, '\\$&' ) ; } ) ;
876
- return '(' + markers . join ( '|' ) + ')?' ;
877
- }
878
-
879
- //########################################################################
872
+ var getPatternAmpm = function ( amNames , pmNames ) {
873
+ var markers = [ ] ;
874
+ if ( amNames )
875
+ $ . merge ( markers , amNames ) ;
876
+ if ( pmNames )
877
+ $ . merge ( markers , pmNames ) ;
878
+ markers = $ . map ( markers , function ( val ) { return val . replace ( / [ . * + ? | ( ) \[ \] { } \\ ] / g, '\\$&' ) ; } ) ;
879
+ return '(' + markers . join ( '|' ) + ')?' ;
880
+ }
881
+
882
+ //########################################################################
880
883
// figure out position of time elements.. cause js cant do named captures
881
884
//########################################################################
882
- var getFormatPositions = function ( timeFormat ) {
883
- var finds = timeFormat . toLowerCase ( ) . match ( / ( h { 1 , 2 } | m { 1 , 2 } | s { 1 , 2 } | l { 1 } | t { 1 , 2 } | z ) / g) ,
884
- orders = { h : - 1 , m : - 1 , s : - 1 , l : - 1 , t : - 1 , z : - 1 } ;
885
+ var getFormatPositions = function ( timeFormat ) {
886
+ var finds = timeFormat . toLowerCase ( ) . match ( / ( h { 1 , 2 } | m { 1 , 2 } | s { 1 , 2 } | l { 1 } | t { 1 , 2 } | z ) / g) ,
887
+ orders = { h : - 1 , m : - 1 , s : - 1 , l : - 1 , t : - 1 , z : - 1 } ;
885
888
886
- if ( finds )
887
- for ( var i = 0 ; i < finds . length ; i ++ )
888
- if ( orders [ finds [ i ] . toString ( ) . charAt ( 0 ) ] == - 1 )
889
- orders [ finds [ i ] . toString ( ) . charAt ( 0 ) ] = i + 1 ;
889
+ if ( finds )
890
+ for ( var i = 0 ; i < finds . length ; i ++ )
891
+ if ( orders [ finds [ i ] . toString ( ) . charAt ( 0 ) ] == - 1 )
892
+ orders [ finds [ i ] . toString ( ) . charAt ( 0 ) ] = i + 1 ;
890
893
891
- return orders ;
892
- }
894
+ return orders ;
895
+ }
893
896
894
- var o = extendRemove ( extendRemove ( { } , $ . timepicker . _defaults ) , options || { } ) ;
897
+ var o = extendRemove ( extendRemove ( { } , $ . timepicker . _defaults ) , options || { } ) ;
895
898
896
- var regstr = '^' + timeFormat . toString ( )
897
- . replace ( / h { 1 , 2 } / ig, '(\\d?\\d)' )
898
- . replace ( / m { 1 , 2 } / ig, '(\\d?\\d)' )
899
- . replace ( / s { 1 , 2 } / ig, '(\\d?\\d)' )
900
- . replace ( / l { 1 } / ig, '(\\d?\\d?\\d)' )
901
- . replace ( / t { 1 , 2 } / ig, getPatternAmpm ( o . amNames , o . pmNames ) )
902
- . replace ( / z { 1 } / ig, '(z|[-+]\\d\\d:?\\d\\d)?' )
903
- . replace ( / \s / g, '\\s?' ) + o . timeSuffix + '$' ,
904
- order = getFormatPositions ( timeFormat ) ,
905
- ampm = '' ,
906
- treg ;
907
-
908
- treg = timeString . match ( new RegExp ( regstr , 'i' ) ) ;
909
-
910
- var resTime = { hour : 0 , minute : 0 , second : 0 , millisec : 0 } ;
899
+ var regstr = '^' + timeFormat . toString ( )
900
+ . replace ( / h { 1 , 2 } / ig, '(\\d?\\d)' )
901
+ . replace ( / m { 1 , 2 } / ig, '(\\d?\\d)' )
902
+ . replace ( / s { 1 , 2 } / ig, '(\\d?\\d)' )
903
+ . replace ( / l { 1 } / ig, '(\\d?\\d?\\d)' )
904
+ . replace ( / t { 1 , 2 } / ig, getPatternAmpm ( o . amNames , o . pmNames ) )
905
+ . replace ( / z { 1 } / ig, '(z|[-+]\\d\\d:?\\d\\d)?' )
906
+ . replace ( / \s / g, '\\s?' ) + o . timeSuffix + '$' ,
907
+ order = getFormatPositions ( timeFormat ) ,
908
+ ampm = '' ,
909
+ treg ;
910
+
911
+ treg = timeString . match ( new RegExp ( regstr , 'i' ) ) ;
912
+
913
+ var resTime = { hour : 0 , minute : 0 , second : 0 , millisec : 0 } ;
911
914
912
- if ( treg ) {
913
- if ( order . t !== - 1 ) {
914
- if ( treg [ order . t ] === undefined || treg [ order . t ] . length === 0 ) {
915
- ampm = '' ;
916
- resTime . ampm = '' ;
917
- } else {
918
- ampm = $ . inArray ( treg [ order . t ] , o . amNames ) !== - 1 ? 'AM' : 'PM' ;
919
- resTime . ampm = o [ ampm == 'AM' ? 'amNames' : 'pmNames' ] [ 0 ] ;
920
- }
921
- }
915
+ if ( treg ) {
916
+ if ( order . t !== - 1 ) {
917
+ if ( treg [ order . t ] === undefined || treg [ order . t ] . length === 0 ) {
918
+ ampm = '' ;
919
+ resTime . ampm = '' ;
920
+ } else {
921
+ ampm = $ . inArray ( treg [ order . t ] , o . amNames ) !== - 1 ? 'AM' : 'PM' ;
922
+ resTime . ampm = o [ ampm == 'AM' ? 'amNames' : 'pmNames' ] [ 0 ] ;
923
+ }
924
+ }
922
925
923
- if ( order . h !== - 1 ) {
924
- if ( ampm == 'AM' && treg [ order . h ] == '12' )
925
- resTime . hour = 0 ; // 12am = 0 hour
926
- else if ( ampm == 'PM' && treg [ order . h ] != '12' )
927
- resTime . hour = parseInt ( treg [ order . h ] , 10 ) + 12 ; // 12pm = 12 hour, any other pm = hour + 12
928
- else resTime . hour = Number ( treg [ order . h ] ) ;
929
- }
926
+ if ( order . h !== - 1 ) {
927
+ if ( ampm == 'AM' && treg [ order . h ] == '12' )
928
+ resTime . hour = 0 ; // 12am = 0 hour
929
+ else if ( ampm == 'PM' && treg [ order . h ] != '12' )
930
+ resTime . hour = parseInt ( treg [ order . h ] , 10 ) + 12 ; // 12pm = 12 hour, any other pm = hour + 12
931
+ else resTime . hour = Number ( treg [ order . h ] ) ;
932
+ }
930
933
931
- if ( order . m !== - 1 ) resTime . minute = Number ( treg [ order . m ] ) ;
932
- if ( order . s !== - 1 ) resTime . second = Number ( treg [ order . s ] ) ;
933
- if ( order . l !== - 1 ) resTime . millisec = Number ( treg [ order . l ] ) ;
934
- if ( order . z !== - 1 && treg [ order . z ] !== undefined ) {
935
- var tz = treg [ order . z ] . toUpperCase ( ) ;
936
- switch ( tz . length ) {
937
- case 1 : // Z
938
- tz = o . timezoneIso8601 ? 'Z' : '+0000' ;
939
- break ;
940
- case 5 : // +hhmm
941
- if ( o . timezoneIso8601 )
942
- tz = tz . substring ( 1 ) == '0000'
943
- ? 'Z'
944
- : tz . substring ( 0 , 3 ) + ':' + tz . substring ( 3 ) ;
945
- break ;
946
- case 6 : // +hh:mm
947
- if ( ! o . timezoneIso8601 )
948
- tz = tz == 'Z' || tz . substring ( 1 ) == '00:00'
949
- ? '+0000'
950
- : tz . replace ( / : / , '' ) ;
951
- else if ( tz . substring ( 1 ) == '00:00' )
952
- tz = 'Z' ;
953
- break ;
954
- }
955
- resTime . timezone = tz ;
956
- }
934
+ if ( order . m !== - 1 ) resTime . minute = Number ( treg [ order . m ] ) ;
935
+ if ( order . s !== - 1 ) resTime . second = Number ( treg [ order . s ] ) ;
936
+ if ( order . l !== - 1 ) resTime . millisec = Number ( treg [ order . l ] ) ;
937
+ if ( order . z !== - 1 && treg [ order . z ] !== undefined ) {
938
+ var tz = treg [ order . z ] . toUpperCase ( ) ;
939
+ switch ( tz . length ) {
940
+ case 1 : // Z
941
+ tz = o . timezoneIso8601 ? 'Z' : '+0000' ;
942
+ break ;
943
+ case 5 : // +hhmm
944
+ if ( o . timezoneIso8601 )
945
+ tz = tz . substring ( 1 ) == '0000'
946
+ ? 'Z'
947
+ : tz . substring ( 0 , 3 ) + ':' + tz . substring ( 3 ) ;
948
+ break ;
949
+ case 6 : // +hh:mm
950
+ if ( ! o . timezoneIso8601 )
951
+ tz = tz == 'Z' || tz . substring ( 1 ) == '00:00'
952
+ ? '+0000'
953
+ : tz . replace ( / : / , '' ) ;
954
+ else if ( tz . substring ( 1 ) == '00:00' )
955
+ tz = 'Z' ;
956
+ break ;
957
+ }
958
+ resTime . timezone = tz ;
959
+ }
957
960
958
- return resTime ;
959
961
960
- }
961
- return null ;
962
+ return resTime ;
963
+ }
964
+
965
+ return false ;
962
966
} ,
963
967
964
968
//########################################################################
@@ -1402,4 +1406,4 @@ var parseDateTimeInternal = function(dateFormat, timeFormat, dateTimeString, dat
1402
1406
$ . timepicker = new Timepicker ( ) ; // singleton instance
1403
1407
$ . timepicker . version = "1.0.1" ;
1404
1408
1405
- } ) ( jQuery ) ;
1409
+ } ) ( jQuery ) ;
0 commit comments