spdx_tools.spdx.datetime_conversions
1# SPDX-FileCopyrightText: 2022 spdx contributors 2# 3# SPDX-License-Identifier: Apache-2.0 4from datetime import datetime, timezone 5 6 7def datetime_from_str(date_str: str) -> datetime: 8 if not isinstance(date_str, str): 9 raise TypeError(f"Could not convert str to datetime, invalid type: {type(date_str).__name__}") 10 11 date = datetime.strptime(date_str, "%Y-%m-%dT%H:%M:%SZ") # raises ValueError if format does not match 12 return date 13 14 15def datetime_to_iso_string(date: datetime) -> str: 16 """ 17 Return an ISO-8601 representation of a datetime object. 18 """ 19 if date.tzinfo is not None: 20 date = date.astimezone(timezone.utc) # Convert aware datetimes to UTC 21 date = date.replace(tzinfo=None) # Convert to naive datetime 22 23 if date.microsecond != 0: 24 date = date.replace(microsecond=0) # SPDX does not support microseconds 25 26 return date.isoformat() + "Z"
def
datetime_from_str(date_str: str) -> datetime.datetime:
8def datetime_from_str(date_str: str) -> datetime: 9 if not isinstance(date_str, str): 10 raise TypeError(f"Could not convert str to datetime, invalid type: {type(date_str).__name__}") 11 12 date = datetime.strptime(date_str, "%Y-%m-%dT%H:%M:%SZ") # raises ValueError if format does not match 13 return date
def
datetime_to_iso_string(date: datetime.datetime) -> str:
16def datetime_to_iso_string(date: datetime) -> str: 17 """ 18 Return an ISO-8601 representation of a datetime object. 19 """ 20 if date.tzinfo is not None: 21 date = date.astimezone(timezone.utc) # Convert aware datetimes to UTC 22 date = date.replace(tzinfo=None) # Convert to naive datetime 23 24 if date.microsecond != 0: 25 date = date.replace(microsecond=0) # SPDX does not support microseconds 26 27 return date.isoformat() + "Z"
Return an ISO-8601 representation of a datetime object.