File tree Expand file tree Collapse file tree 1 file changed +9
-3
lines changed Expand file tree Collapse file tree 1 file changed +9
-3
lines changed Original file line number Diff line number Diff line change @@ -67,9 +67,15 @@ public function toNative($opts)
67
67
if ((!isset ($ opts ['timeFormat ' ]) || $ opts ['timeFormat ' ] == "native " )
68
68
&& isset ($ native ['$reql_type$ ' ]) && $ native ['$reql_type$ ' ] == 'TIME ' ) {
69
69
$ time = $ native ['epoch_time ' ];
70
- //$format = (strpos($time, '.') !== false) ? 'Y-m-d H:i:s.u' : 'Y-m-d H:i:s';
71
- $ format = (strpos ($ time , '. ' ) !== false ) ? 'Y-m-d\TH:i:s.u ' : 'Y-m-d\TH:i:s ' ;
72
- $ datetime = new \DateTime (date ($ format , $ time ) . $ native ['timezone ' ], new \DateTimeZone ('UTC ' ));
70
+ // This is really stupid. It looks like we can either use `date`, which ignores microseconds,
71
+ // or we can use `createFromFormat` which cannot handle negative epoch times.
72
+ if ($ time < 0 ) {
73
+ $ format = (strpos ($ time , '. ' ) !== false ) ? 'Y-m-d\TH:i:s.u ' : 'Y-m-d\TH:i:s ' ;
74
+ $ datetime = new \DateTime (date ($ format , $ time ) . $ native ['timezone ' ], new \DateTimeZone ('UTC ' ));
75
+ } else {
76
+ $ format = (strpos ($ time , '. ' ) !== false ) ? '!U.u T ' : '!U T ' ;
77
+ $ datetime = \DateTime::createFromFormat ($ format , $ time . " " . $ native ['timezone ' ], new \DateTimeZone ('UTC ' ));
78
+ }
73
79
74
80
// This is horrible. Just because in PHP 5.3.something parsing "+01:00" as a DateTimeZone doesn't work. :(
75
81
$ tzSign = $ native ['timezone ' ][0 ];
You can’t perform that action at this time.
0 commit comments