time 模块和datetime 模块都有strptime 和 strftime 这两个函数
time和 datetime模块的区别
- 在python文档中,time是归类在常规操作系统服务中,它提供的功能更加接近于操作系统层面。其所能表述的日期范围被限定在1970-2038之间,如果需要表述范围之外的日期,可能需要考虑使用datetime模块更好
- datetime比time高级了不少,可以理解为datetime基于time进行了封装,提供了更多实用的函数,主要包含一下几类:
timedelta:主要用于计算时间跨度
tzinfo:时区相关
time:只关注时间
date:只关注日期
datetime:同时有时间和日期 - 在实际使用中,用得比较多的是datetime.datetime和datetime.timedelta,另外两个datetime.date和datetime.time实际使用和datetime.datetime并无太大差别
strftime strptime的区别
- f 是“format”缩写, p是"parse"缩写, (分别代表“格式化”和“解析”)
- strftime 和strptime 都需要接收一个参数format格式化字符串, 但是作用刚好是相反的
- strftime 根据指定的format把一个python可以识别的时间类型格式化为时间字符串
- strptime根据指定的format把一个"时间字符串"解析为“python可以识别的时间类型”
import time
now = time.localtime()
print(now, type(now))
res_f= time.strftime("%Y-%m-%d %H:%M:%S", now)
print(res_f, type(res_f))
res_p = time.strptime("2021-03-12", "%Y-%m-%d")
print(res_p,type(res_p))
time.struct_time(tm_year=2021, tm_mon=3, tm_mday=12, tm_hour=19, tm_min=43, tm_sec=1, tm_wday=4, tm_yday=71, tm_isdst=0) <class 'time.struct_time'>
2021-03-12 19:43:01 <class 'str'>
time.struct_time(tm_year=2021, tm_mon=3, tm_mday=12, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=71, tm_isdst=-1) <class 'time.struct_time'>
from datetime import datetime
now = datetime.now()
print(now, type(now))
res_f = datetime.strftime(now, "%Y-%m-%d")
print(res_f, type(res_f))
res_p = datetime.strptime("2021-03-12", "%Y-%m-%d")
print(res_p, type(res_p))
2021-03-12 19:47:59.919526 <class 'datetime.datetime'>
2021-03-12 <class 'str'>
2021-03-12 00:00:00 <class 'datetime.datetime'>