1 represents a time interval: timedelta
1 from datetime import timedelta 2 a = timedelta(days=2,hours=6) 3 b = timedelta(hours=4.5) 4 c = a + b
2. Expresses a specific date: datetime
1 form datetime import datetime,timedelta 2 a = datetime(2019,10,19) 3 b = timedelta(days=2) 4 now = datetime.today() 5 print(now+b) 6 print(a+b)
Note: datetime can correctly handle leap years
3. address issues relating to the month, to fill the vacant look of datetime
from dateutil.relativedelta import relativedelta
1 from dateutil.relativedelta import relativedelta 2 from datetime import datetime 3 4 now = datetime.today() 5 print(now+relativedelta(months=+2)
4. Locate the month date range
1 from datetime import datetime,date,timedelta 2 import calendar 3 4 def get_month_range(start_date=None): 5 if start_date is None: 6 start_date = date.today().replace(day=1) 7 days_in_month = calendar.monthrange(start_date.year,start_date.month) 8 end_date = start_date + timedelta(days = days_in_month) 9 return (start)date,end_date)
5. Strings to date
1 from datetime import datetime 2 text = "2012-09-20" 3 y = datetime.striptime(text,"%Y-%m-%d")
striptime relatively poor performance if the proposed format under the circumstances we know the time to write the function string processing