Source code for otx.api.serialization.datetime_mapper
"""This module contains the mapper for datetime."""
#
# Copyright (C) 2021-2022 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
#
import datetime
from typing import Union
from otx.api.utils.time_utils import now
[docs]
class DatetimeMapper:
"""This class maps a `datetime.datetime` entity to a string, and vice versa."""
[docs]
@staticmethod
def forward(instance: datetime.datetime) -> str:
"""Serializes datetime to str."""
return instance.strftime("%Y-%m-%dT%H:%M:%S.%f")
[docs]
@staticmethod
def backward(instance: Union[None, str]) -> datetime.datetime:
"""Deserializes datetime from str or create new one if it is None."""
if isinstance(instance, str):
modification_date = datetime.datetime.strptime(instance, "%Y-%m-%dT%H:%M:%S.%f")
return modification_date.replace(tzinfo=datetime.timezone.utc)
return now()