11# SPDX-FileCopyrightText: 2022 spdx contributors
22#
33# SPDX-License-Identifier: Apache-2.0
4- from datetime import datetime
4+ from datetime import datetime , timezone
55
66import pytest
77
88from spdx_tools .spdx .datetime_conversions import datetime_from_str , datetime_to_iso_string
99
10+ # The following is required as long as we support Python 3.8.x or
11+ # older. Once Python 3.9 is the oldest version we support, we can
12+ # rely solely on the section which imports and uses zoneinfo.
13+
14+ try :
15+ # Python 3.9 and later
16+ from zoneinfo import ZoneInfo
17+
18+ tz_nyc = ZoneInfo ("America/New_York" )
19+ except ImportError :
20+ # Python 3.8 and earlier
21+ from datetime import timedelta
22+
23+ tz_nyc = timezone (timedelta (hours = - 4 ))
24+
1025
1126def test_datetime_to_iso_string ():
1227 assert datetime_to_iso_string (datetime (2022 , 12 , 13 , 1 , 2 , 3 )) == "2022-12-13T01:02:03Z"
@@ -16,6 +31,16 @@ def test_datetime_to_iso_string_with_microseconds():
1631 assert datetime_to_iso_string (datetime (2022 , 12 , 13 , 1 , 2 , 3 , 666666 )) == "2022-12-13T01:02:03Z"
1732
1833
34+ def test_utc_datetime_to_iso_string ():
35+ dt = datetime (2023 , 10 , 4 , 1 , 2 , 3 , tzinfo = timezone .utc )
36+ assert datetime_to_iso_string (dt ) == "2023-10-04T01:02:03Z"
37+
38+
39+ def test_local_datetime_to_iso_string ():
40+ dt = datetime (2023 , 10 , 4 , 1 , 2 , 3 , tzinfo = tz_nyc )
41+ assert datetime_to_iso_string (dt ) == "2023-10-04T05:02:03Z"
42+
43+
1944def test_datetime_from_str ():
2045 date_str = "2010-03-04T05:45:11Z"
2146
0 commit comments