def __init__(self, datetime_obj, *args, **kwargs): """ initializes humanize class datetime_obj: python datetime object to be humanized threshold (kwargs): threshold to be humanize format (kwargs): format to display behind threshold """ if type(datetime_obj) == nepalidatetime: self.datetime_obj = datetime_obj.to_datetime() elif type(datetime_obj) == nepalidate: self.datetime_obj = nepalidatetime.from_nepali_date( datetime_obj).to_datetime() elif type(datetime_obj) == pythonDateTime.date: self.datetime_obj = nepalidatetime.from_date( datetime_obj).to_datetime() elif type(datetime_obj) == pythonDateTime.datetime: self.datetime_obj = to_nepali_timezone(datetime_obj) else: raise InvalidNepaliDateTimeObjectException( 'Argument must be instance of NepaliDate or NepaliDateTime or datetime.datetime or datetime.date' ) self.threshold = kwargs.get('threshold') self.format = kwargs.get('format') # seconds after from now to datetime_obj self.seconds = None
def __eq__(self, other): """ equal """ if type(other) == self.__class__: """ NepaliDate object """ return self.to_date() == other.to_date() elif type(other) == pythonDateTime.date: """ pythonDate object """ return self.to_date() == to_nepali_timezone(other) return False
def __ne__(self, other): """ not equal """ if type(other) == self.__class__: """ nepalidatetime object """ return self.to_datetime() != other.to_datetime() elif type(other) == pythonDateTime.datetime: """ pythonDateTime object """ return self.to_datetime() != to_nepali_timezone(other) return True
def __ge__(self, other): """ greater than equal """ if type(other) == self.__class__: """ nepalidatetime object """ return self.to_datetime() >= other.to_datetime() elif type(other) == pythonDateTime.datetime: """ pythonDateTime object """ return self.to_datetime() >= to_nepali_timezone(other) return None
def __lt__(self, other): """ less than """ if type(other) == self.__class__: """ nepalidatetime object """ return self.to_datetime() < other.to_datetime() elif type(other) == pythonDateTime.datetime: """ pythonDateTime object """ return self.to_datetime() < to_nepali_timezone(other) return None
def __sub__(self, other): """ substraction """ if type(other) == self.__class__: """ nepalidatetime object """ return self.to_datetime() - other.to_datetime() elif type(other) == pythonDateTime.datetime: return self.to_datetime() - to_nepali_timezone(other) elif type(other) == pythonDateTime.timedelta: """ timedelta object """ return nepalidatetime.from_datetime(self.to_datetime() - other) return None
def to_datetime(self): return to_nepali_timezone(pythonDateTime.datetime.combine(self.__python_date, pythonDateTime.time()))
def from_datetime(dt): dt = to_nepali_timezone(dt) nd = nepalidate.from_date(dt.date()) return nepalidatetime(nd.year, nd.month, nd.day, dt.hour, dt.minute, dt.second, dt.microsecond)
def to_datetime(self): return to_nepali_timezone(pythonDateTime.datetime.combine(self.__npDate.to_date(), self.__npTime))
def test_nepalidatetime_from_datetime(self): python_datetime_obj = datetime.datetime(year=1994, month=8, day=12, hour=5, minute=28, second=23) nepalidatetime_obj = nepalidatetime.from_datetime(python_datetime_obj) self.assertEqual(to_nepali_timezone(python_datetime_obj), nepalidatetime_obj.to_datetime())