python time、datetime模块
时间的三种格式:
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))
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))