写程序时对时间的处理可以归为以下3种:
1、时间的显示,在屏幕显示、记录日志等。
2、时间的转换,比如把字符串格式的日期转成Python中的日期类型。
3、时间的运算,计算两个日期间的差值等。
在python中表示时间的方式:
1、时间戳(timestamp), 表示的是从1970年1月1日00:00:00开始按秒计算的偏移量
2、格式化的时间字符串
3、元组(struct_time)共九个元素。由于Python的time模块实现主要调用C库,所以各个平台可能有所不同,mac上:time.struct_time(tm_year=2020, tm_mon=4, tm_mday=10, tm_hour=2, tm_min=53, tm_sec=15, tm_wday=2, tm_yday=100, tm_isdst=0)
0 tm_year(年) 比如2011
1 tm_mon(月) 1 - 12
2 tm_mday(日) 1 - 31
3 tm_hour(时) 0 - 23
4 tm_min(分) 0 - 59
5 tm_sec(秒) 0 - 61
6 tm_wday(weekday) 0 - 6(0表示周日)
7 tm_yday(一年中的第几天) 1 - 366
8 tm_isdst(是否是夏令时) 默认为-1
time模块方法
1、time.localtime([secs]):将一个时间戳转换为struct_time,若secs参数为设定,则以当前时间为准
2、time.gmtime([secs]):将一个时间戳转换为UTC时区(0时区)的struct_time
3、time.time():返回当前时间的时间戳
4、time.mktime(t):将一个struct_time转化为时间戳。
5、time.sleep(secs):线程推迟指定的时间运行,单位为秒。
6、time.asctime([t]):把一个表示时间的元组或者struct_time表示为这种形式:'Wed Sep 25 15:26:03 2019',若没有参数,则以当前时间为准
7、time.ctime([secs]):把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))
8、time.strftime(format[, t]):把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()
9、time.strptime(string[, format]):把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
datetime模块
1、datetime.date.today(): datetime.date(2019, 9, 25)
2、datetime.date.timeturple(datetime.date.today()):
time.struct_time(tm_year=2019, tm_mon=9, tm_mday=25, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=268, tm_isdst=-1)
4、datetime.date.fromtimestamp("时间戳")
如:datetime.date.fromtimestamp(100000000)
datetime.date(1973, 3, 3)
5、datetime.datetime.now()
datetime.datetime(2019, 9, 25, 18, 20, 50, 795482)
6、datetime.datetime.fromtimestamp("时间戳")
7、datetime.timedelta():做时间的运算。
d1 = datetime.datetime.now()
datetime.datetime(2019, 9, 25, 18, 26, 25, 863051)
d1 - datetime.timedelta(days=4)
datetime.datetime(2019, 9, 21, 18, 26, 25, 863051)
括号内还可以填写hours(小时),seconds(秒),microseconds(毫秒),minutes(分钟)
8、时间替换
d1 = datetime.datetime.now()
datetime.datetime(2019, 9, 25, 18, 31, 51, 429162)
d1.replace(years = 2015, month=11, day=30)
datetime.datetime(2015, 11, 30, 18, 31, 51, 429162)