99
1010# 3rd party
1111import pytz
12+ from domdf_python_tools .dates import datetime_to_utc_timestamp
1213
1314# this package
1415import sdjson
@@ -70,16 +71,16 @@ def encode_fraction_str(obj):
7071 sdjson .encoders .unregister (Fraction )
7172
7273
73- # def test_datetime_float():
74- # # Create and register a custom encoder for datetime that turns it into a float
75- # @sdjson.encoders.register(datetime)
76- # def encode_datetime_float(obj):
77- # return obj.astimezone(pytz.utc).timestamp( )
78- #
79- # assert sdjson.dumps(datetime(1945, 5, 8, 19, 20)) == "-777883200 .0"
80- #
81- # # Cleanup
82- # sdjson.encoders.unregister(datetime)
74+ def test_datetime_float ():
75+ # Create and register a custom encoder for datetime that turns it into a float
76+ @sdjson .encoders .register (datetime )
77+ def encode_datetime_float (obj ):
78+ return datetime_to_utc_timestamp ( obj )
79+
80+ assert sdjson .dumps (datetime (1945 , 5 , 8 , 19 , 20 )) == "-777876000 .0"
81+
82+ # Cleanup
83+ sdjson .encoders .unregister (datetime )
8384
8485
8586def test_datetime_str ():
@@ -105,20 +106,20 @@ def encode_datetime_tuple(obj):
105106 # Cleanup
106107 sdjson .encoders .unregister (datetime )
107108
108- #
109- # def test_timedelta_float():
110- # # Create and register a custom encoder for timedelta that turns it into a float
111- # @sdjson.encoders.register(timedelta)
112- # def encode_timedelta_float(obj):
113- # return obj.total_seconds()
114- #
115- # start_date = datetime(1945, 5, 8, 19, 20).astimezone( pytz.utc)
116- # end_date = datetime(2020, 5, 8, 9, 0).astimezone( pytz.utc)
117- # delta = end_date - start_date
118- # assert sdjson.dumps(delta) == "2366808000 .0"
119- #
120- # # Cleanup
121- # sdjson.encoders.unregister(timedelta)
109+
110+ def test_timedelta_float ():
111+ # Create and register a custom encoder for timedelta that turns it into a float
112+ @sdjson .encoders .register (timedelta )
113+ def encode_timedelta_float (obj ):
114+ return obj .total_seconds ()
115+
116+ start_date = datetime (1945 , 5 , 8 , 19 , 20 ).replace ( tzinfo = pytz .utc )
117+ end_date = datetime (2020 , 5 , 8 , 9 , 0 ).replace ( tzinfo = pytz .utc )
118+ delta = end_date - start_date
119+ assert sdjson .dumps (delta ) == "2366804400 .0"
120+
121+ # Cleanup
122+ sdjson .encoders .unregister (timedelta )
122123
123124
124125# def test_date_float():
@@ -130,7 +131,7 @@ def encode_datetime_tuple(obj):
130131# assert sdjson.dumps(date(1945, 5, 8)) == "-777952800.0"
131132#
132133# # Cleanup
133- # sdjson.encoders.unregister(datetime )
134+ # sdjson.encoders.unregister(date )
134135
135136
136137def test_date_str ():
0 commit comments