时间的三种格式:
1)时间戳
2)格式化的时间字符串
3)元组(struct_time):time.struct_time(tm_year=1970, tm_mon=5, tm_mday=23, tm_hour=20, tm_min=7, tm_sec=14, tm_wday=5, tm_yday=143, tm_isdst=0)
元组中的9个元素分别对应:年、月、日、时、分、秒、星期几(要减去1,默认星期一是0)、一年的第几天、是否是夏令时
time模块:
获取时间戳:
timeStamp = time.time() print(timeStamp) # 当前时间;时间戳格式
时间戳 -----> 时间元组:
# 时间戳--->元组 print(time.gmtime(12341234)) # 时间元组;获取某个时间戳的UTC时间(不写参数则为当前时间) print(time.localtime()) # 时间元组;获取某个时间戳的本地时间(不写参数则为当前时间) print(time.localtime().tm_year) # 获取元组中某个元素的值
时间元组 ------> 时间戳:
# 时间元组--->时间戳 tupleTime = time.localtime() # 当前时间的时间元组 print(time.mktime(tupleTime)) # 时间戳
时间元组------> 格式化字符串:
# 时间元组--->格式化字符串 print(time.strftime('%Y-%m-%d %H:%M:%S, %a,%A,%b,%B,%c,%I,%j,%p,%U,%w,%W,%x,%X,%y',tupleTime)) print(time.strftime('%x %X',tupleTime))
''' %a 本地(locale)简化星期名称 %A 本地完整星期名称 %b 本地简化月份名称 %B 本地完整月份名称 %c 本地相应的日期和时间表示 %d 一个月中的第几天(01 - 31) %H 一天中的第几个小时(24小时制,00 - 23) %I 第几个小时(12小时制,01 - 12) %j 一年中的第几天(001 - 366) %m 月份(01 - 12) %M 分钟数(00 - 59) %p 本地am或者pm的相应符 %S 秒(01 - 61) %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。 %w 一个星期中的第几天(0 - 6,0是星期天) %W 和%U基本相同,不同的是%W以星期一为一个星期的开始。 %x 本地相应日期 %X 本地相应时间 %y 去掉世纪的年份(00 - 99) %Y 完整的年份 %Z 时区的名字(如果不存在为空字符) %% ‘%’字符'''
格式化字符串-------> 时间元组:
# 格式化时间字符串--->时间元组 print(time.strptime('2019-12-01 21:29:30','%Y-%m-%d %H:%M:%S'))
时间元组、时间戳---------> 固定格式字符串
# 时间元组/时间戳--->固定格式字符串 print(time.asctime()) print(time.ctime(timeStamp))
2. datetime模块
datetime模块是对time模块的封装,本质没有太大区别
import datetime print('datetime'.center(50,'-')) current_time = datetime.datetime.now() print(current_time) # 当前格式化的时间 print(datetime.date.fromtimestamp(timeStamp)) # 时间戳转换成年月日 print(datetime.datetime.now()+datetime.timedelta(3)) # 三天后的时间,可以为负数,为几天前 print(datetime.datetime.now()+datetime.timedelta(hours=3)) # 几小时后的时间 print(datetime.datetime.now()+datetime.timedelta(minutes=3)) print(datetime.datetime.now()+datetime.timedelta(weeks=3)) # 时间的替换 print(current_time.replace(year=2012,month=12,day=12,hour=12,minute=12,second=12,microsecond=12))