@@ -17,7 +17,11 @@ var parseDate = function(isoDate) {
17
17
return new Date ( isoDate ) ;
18
18
}
19
19
}
20
- var year = match [ 1 ] ;
20
+ var isBC = / B C $ / . test ( isoDate ) ;
21
+ var _year = parseInt ( match [ 1 ] , 10 ) ;
22
+ var isFirstCentury = ( _year > 0 ) && ( _year < 100 ) ;
23
+ var year = ( isBC ? "-" : "" ) + match [ 1 ] ;
24
+
21
25
var month = parseInt ( match [ 2 ] , 10 ) - 1 ;
22
26
var day = match [ 3 ] ;
23
27
var hour = parseInt ( match [ 4 ] , 10 ) ;
@@ -37,6 +41,7 @@ var parseDate = function(isoDate) {
37
41
var tZone = / ( [ Z | + \- ] ) ( \d { 2 } ) ? : ? ( \d { 2 } ) ? / . exec ( isoDate . split ( ' ' ) [ 1 ] ) ;
38
42
//minutes to adjust for timezone
39
43
var tzAdjust = 0 ;
44
+ var date ;
40
45
if ( tZone ) {
41
46
var type = tZone [ 1 ] ;
42
47
switch ( type ) {
@@ -53,13 +58,18 @@ var parseDate = function(isoDate) {
53
58
}
54
59
55
60
var utcOffset = Date . UTC ( year , month , day , hour , min , seconds , mili ) ;
56
- return new Date ( utcOffset - ( tzAdjust * 60 * 1000 ) ) ;
61
+
62
+ date = new Date ( utcOffset - ( tzAdjust * 60 * 1000 ) ) ;
57
63
}
58
64
//no timezone information
59
65
else {
60
- return new Date ( year , month , day , hour , min , seconds , mili ) ;
66
+ date = new Date ( year , month , day , hour , min , seconds , mili ) ;
61
67
}
62
-
68
+
69
+ if ( isFirstCentury ) {
70
+ date . setUTCFullYear ( year ) ;
71
+ }
72
+ return date ;
63
73
} ;
64
74
65
75
var parseBool = function ( val ) {
0 commit comments