python 时间 time datetime

python中的时间日期相关的模块,有time、datetime。工作中经常要用到,在此总结归纳,以便查询。

先了解下什么是时间戳,就是从 1970 年 1 月 1 日 00:00:00 到现在的秒数。1970年以前的时间戳为负数,那为什么计算机时间要从1970年1月1日开始算起?


最初计算机操作系统是32位,32位能表示的最大数值就是2147483647,一年365天的总秒数是31536000

2147483647/31536000=68.1,也就是说32位能表示的最长时间就是68年,从1970年开始的话,加上68.1年,实际最终到2038年01月19日03时14分07秒,便会达到最大时间,过了这个时间点,所有32位操作系统时间便会变为10000000 00000000 00000000 00000000,算下来也就是1901年12月13日20时45分52秒,这样便会出现时间回归的现象,很多软件便会运行异常。 

Ritchie说这个时间其实是随意选择的,因为需要一个统一的日期来作为时间的起点,而1970年的元旦,看起来是最方便的。

至于时间回归现象,随着64位操作系统的出现也不会再出现了,时间可以表示到292,277,026,596年的12月4日14时30分08秒。

1、time.time() 当前时间转换为时间戳

time.time()
Out[3]: 1553234464.7696419

2、time.localtime()  时间戳转换为时间元组struct_time

如果是当前时间戳,默认可以省略,wday(周一0 - 周日6),yday在一年中的第几天(1-366),isdst是否是夏令时(0否,1是)

夏时制,(英语:Summer time),又称日光节约时间(英语:Daylight saving time),是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时间”。一般情况是,在天亮较早的夏季,政府人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。

time.localtime(1553234464.7696419)
Out[4]: time.struct_time(tm_year=2019, tm_mon=3, tm_mday=22, tm_hour=14, tm_min=1, tm_sec=4, tm_wday=4, tm_yday=81, tm_isdst=0)

time.localtime()
Out[5]: time.struct_time(tm_year=2019, tm_mon=3, tm_mday=22, tm_hour=14, tm_min=5, tm_sec=17, tm_wday=4, tm_yday=81, tm_isdst=0)

3、time.mktime() 时间元组转换为时间戳

localtime()的反操作,接收时间元组,返回时间戳

t = (2019, 3, 22, 14, 1, 4, 4, 81, -1)
time.mktime(t)
Out[15]: 1553234464.0


4、time.strftime() 时间戳转换为指定格式的字符串(string format time)

先用 localtime() 把时间戳转换为 时间元组struct_time, 再传给 strftime 转换为指定格式的字符串

st = time.localtime(1553234464.7696419)
time.strftime('%Y-%m-%d %H-%M-%S', st)
Out[8]: '2019-03-22 14-01-04

5、time.strptime() 指定格式的时间转换为时间戳(string parse time)

time.strftime() 的反操作

st = time.strptime('2019-03-22 14-01-04', '%Y-%m-%d %H-%M-%S')
print(st)
time.struct_time(tm_year=2019, tm_mon=3, tm_mday=22, tm_hour=14, tm_min=1, tm_sec=4, tm_wday=4, tm_yday=81, tm_isdst=-1)
time.mktime(st)
Out[11]: 1553234464.0

练习题

1、定义一个函数,输入生日,返回 到现在一共过了多少天?

猜你喜欢

转载自blog.csdn.net/fanren224/article/details/88738874