2022年 11月 7日

python用于日期常用的函数

1、strptime

strptime是将一个(时间)字符串解析为时间的一个类型对象,将字符串格式转为日期格式

  1. import datetime
  2. time1 = datetime.datetime.strptime('2021-8-11', '%Y-%m-%d').date()
  3. time2 = datetime.datetime.strptime('2021-8-7', '%Y-%m-%d').date()
  4. time3 = datetime.datetime.strptime('2021-08-11', '%Y-%m-%d').date()
  5. time4 = datetime.datetime.strptime('2021-08-07', '%Y-%m-%d').date()
  6. print(time1)
  7. print(time2)
  8. print(time3)
  9. print(time4)
  10. 输出:
  11. 2021-08-11
  12. 2021-08-07
  13. 2021-08-11
  14. 2021-08-07

2、strftime

strftime将时间类型数据转换成想要的时间格式

  1. print(datetime.date(2021,12,12).strftime('%Y')=='2021')
  2. print(datetime.date(2021,12,12).strftime('%m')=='12')
  3. print(datetime.date(2021,12,12).strftime('%d')=='12')
  4. print(datetime.date(2021,12,12).strftime('%Y-%m') == '2021-12')
  5. print(datetime.date(2021,12,12).strftime('%Y%m') == '202112')
  6. print(datetime.date(2021,12,12).strftime('%Y-%m-%d') == '2021-12-12')
  7. print(datetime.date(2021,12,12).strftime('%Y%m%d') == '20211212')
  8. print(datetime.date(2021,12,12).strftime('%Y-%m-%d %H:%M:%S') == '2021-12-12 00:00:00')
  9. 输出:
  10. True
  11. True
  12. True
  13. True
  14. True
  15. True
  16. True
  17. True

3、timedelta、relativedelta

timedelta、relativedelta函数。timedelta()函数仅支持days和weeks参数,而relativedelta()函数可以支持年 、月、日、周、时、分、秒的参数,后者的功能更加强大,在实际中用到的较多。

  1. import datetime
  2. from dateutil.relativedelta import relativedelta
  3. now_date = datetime.datetime.now()
  4. print (now_date)
  5. print('***********')
  6. print (now_date - relativedelta(months=24)) #往前两年
  7. print (now_date + relativedelta(months=1)) #往后一个月
  8. print (now_date + relativedelta(years=1)) #往后一年
  9. print (now_date + relativedelta(days=1)) #往后一天
  10. print (now_date + relativedelta(weeks=1)) #往后一周
  11. print (now_date + relativedelta(hours=1)) #往后一小时
  12. print (now_date + relativedelta(minutes=1)) #往后一分钟
  13. print (now_date + relativedelta(seconds=1)) ##往后一秒
  14. print('***********')
  15. print (now_date + datetime.timedelta(days=2)) #往后两天
  16. print (now_date + datetime.timedelta(weeks=1)) #往后一周
  17. 输出:
  18. 2021-12-12 00:49:30.102806
  19. ***********
  20. 2019-12-12 00:49:30.102806
  21. 2022-01-12 00:49:30.102806
  22. 2022-12-12 00:49:30.102806
  23. 2021-12-13 00:49:30.102806
  24. 2021-12-19 00:49:30.102806
  25. 2021-12-12 01:49:30.102806
  26. 2021-12-12 00:50:30.102806
  27. 2021-12-12 00:49:31.102806
  28. ***********
  29. 2021-12-14 00:49:30.102806
  30. 2021-12-19 00:49:30.102806

4、isocalendar

python的isocalendar(),isocalendar()返回指定日期的年,第几周,周几这三个值

  1. import datetime
  2. date_time = datetime.date(2021,12,12)
  3. res = date_time.isocalendar()
  4. print (res)
  5. 输出:
  6. # (2021, 12, 12)
  7. # 2012年, 第49周, 周日

5、format

  1. a_1 = 2021
  2. a_2 = 1
  3. print('{:04d}{:01d}'.format(a_1, a_2))
  4. print('{:04d}{:02d}'.format(a_1, a_2))
  5. 输出:
  6. 20211
  7. 202101