Source code for datemore.time

# -*- coding: utf-8 -*-

import datetime
import typing

import datemore.datetime

TimeType = typing.Union[datetime.time, "Time"]


[docs]class Time(datetime.time):
[docs] @classmethod def from_native(cls, _time: datetime.time) -> "Time": """Creates a wrapped Time instance from a native datetime time """ return cls( _time.hour, _time.minute, _time.second, _time.microsecond, fold=_time.fold )
[docs] @classmethod def delta(cls, t1: "Time", t2: "Time") -> datetime.timedelta: """Calculates the difference between two times """ return t2.as_date() - t1.as_date()
[docs] def as_date(self) -> "datemore.datetime.Datetime": """Converts a Time instance to a Datetime instance using today's date """ return datemore.datetime.Datetime.from_native( datetime.datetime.combine(datetime.date.today(), self) )
[docs] def native(self) -> datetime.time: """Returns the underlying native datetime time instance """ return datetime.time( self.hour, self.minute, self.second, self.microsecond, fold=self.fold )
[docs] def add(self, **kwargs: int) -> "Time": """Returns a new Time instance shifted by given parameters """ dt = self.as_date().native() dt += datetime.timedelta(**kwargs) return datemore.datetime.Datetime.from_native(dt).time()