File tree Expand file tree Collapse file tree 2 files changed +24
-3
lines changed Expand file tree Collapse file tree 2 files changed +24
-3
lines changed Original file line number Diff line number Diff line change 1
1
import calendar
2
2
import datetime
3
3
import re
4
+ import os
4
5
import warnings
5
6
from csep .utils .constants import SECONDS_PER_ASTRONOMICAL_YEAR , SECONDS_PER_DAY
6
7
@@ -17,8 +18,25 @@ def epoch_time_to_utc_datetime(epoch_time_milli):
17
18
"""
18
19
if epoch_time_milli is None :
19
20
return epoch_time_milli
21
+
20
22
epoch_time = epoch_time_milli / 1000
21
- dt = datetime .datetime .fromtimestamp (epoch_time , datetime .timezone .utc )
23
+
24
+ if os .name == "nt" and epoch_time < 0 :
25
+
26
+ if isinstance (epoch_time , int ):
27
+ sec = epoch_time
28
+ milli_sec = 0
29
+ else :
30
+ whole , frac = str (epoch_time ).split ("." )
31
+ sec = int (whole )
32
+ milli_sec = int (frac ) * - 1
33
+ dt = datetime .datetime (1970 , 1 , 1 ) + datetime .timedelta (
34
+ seconds = sec ,
35
+ milliseconds = milli_sec
36
+ )
37
+ else :
38
+ dt = datetime .datetime .fromtimestamp (epoch_time , datetime .timezone .utc )
39
+
22
40
return dt
23
41
24
42
def datetime_to_utc_epoch (dt ):
Original file line number Diff line number Diff line change @@ -50,5 +50,8 @@ def test_decimal_year_epoch(self):
50
50
test_year = decimal_year (epoch_time_to_utc_datetime (epoch ))
51
51
self .assertAlmostEqual (year , test_year )
52
52
53
-
54
-
53
+ def test_negative_epoch (self ):
54
+ year = 1969.12315213421321321
55
+ epoch = decimal_year_to_utc_epoch (year )
56
+ test_year = decimal_year (epoch_time_to_utc_datetime (epoch ))
57
+ self .assertAlmostEqual (year , test_year )
You can’t perform that action at this time.
0 commit comments