from datetime import datetime from datetime import timedelta class DateTimeHelper: def __init__(self): pass def __init__(self,capturedatetime,timeChange): self.datetimestamp=capturedatetime self.timeChange=timeChange self.offsetTime=DateTimeHelper.applyRelativeTime(self.datetimestamp, self.timeChange) def getDateTimeStamp(self): return self.datetimestamp def getTimeChange(self): return self.timeChange def getOffsetTime(self): return self.offsetTime def getOffsetTimeAsString(self): return DateTimeHelper.getDateTimeAsString(self.offsetTime) def toString(self): pass @staticmethod def getDateTimeAsString(someDateTime): if(not isinstance(someDateTime,datetime)): raise Exception('Invalid type for parameter') return someDateTime.strftime("%m-%d-%Y %H:%M:%S") @staticmethod def getDateTimeFromString(someDateTimeString): if(not isinstance(someDateTimeString,str)): raise Exception('Invalid type for parameter') return datetime.strptime(someDateTimeString,"%m-%d-%Y %H:%M:%S") @staticmethod def getCurrentDateTime(): return datetime.now() @staticmethod def applyRelativeTime(sometime,relativetime): if(not isinstance(sometime,datetime)): raise Exception('Invalid type for parameter') if(not isinstance(relativetime,str)): raise Exception('Invalid type for parameter') if relativetime=='just now': return sometime relativetimesplit=relativetime.split() if len(relativetimesplit)==2: year=datetime.now().year relativetime=relativetime+', '+str(year) relativeDate = datetime.strptime(relativetime, '%B %d, %Y') days=sometime-relativeDate # sometime=sometime-timedelta(days=days) sometime=sometime-days elif relativetimesplit[1]=='hour' or relativetimesplit[1]=='hours': hours=int(relativetimesplit[0]) sometime=sometime-timedelta(hours=hours) elif relativetimesplit[1]=='day' or relativetimesplit[1]=='days': days=int(relativetimesplit[0]) sometime=sometime-timedelta(days=days) elif relativetimesplit[1]=='minute' or relativetimesplit[1]=='minutes': minutes=int(relativetimesplit[0]) sometime=sometime-timedelta(minutes=minutes) return sometime list=[] # date_time_str='03-03-2023 12:00:00' # capturedatetime = datetime.strptime(date_time_str, '%m-%d-%Y %H:%M:%S') # Item.applyRelativeTime(capturedatetime, '2 days ago') deltaTime='March 7' now = datetime.now() relativeTime=DateTimeHelper.applyRelativeTime(now, deltaTime) relativeTimeStr=DateTimeHelper.getDateTimeAsString(relativeTime) print('time:{p1}'.format(p1=DateTimeHelper.getDateTimeAsString(now))) print('delta:{p1}'.format(p1=deltaTime)) print('result:{p1}'.format(p1=relativeTimeStr)) #now = Item.getCurrentDateTime() #capturedatetime = Item.getDateTimeAsString(now) #Item.applyRelativeTime(capturedatetime, 'February 24') list.append(Item(capturedatetime,'February 24')) list.append(Item(capturedatetime,'2 days ago')) list.append(Item(capturedatetime,'21 days ago')) list.append(Item(capturedatetime,'1 day ago')) list.append(Item(capturedatetime,'1 minute ago')) list.append(Item(capturedatetime,'5 minutes ago')) for item in list: print (item) # date_time_str='01-01-2023 12:00:00' # b = datetime.strptime(date_time_str, '%m-%d-%Y %H:%M:%S') # date_time_str='01-01-2023 18:00:00' # c = datetime.strptime(date_time_str, '%m-%d-%Y %H:%M:%S') # list.append(a) # list.append(b) # list.append(c) # print(list) # another=sorted(list, key=lambda x:x) # print(another) # for item in another: # print('{:02d}-{:02d}-{:d} {:02d}:{:02d}:{:02d}'.format(item.month,item.day,item.year,item.hour,item.minute,item.second))