繁体   English   中英

将Unix时间戳值转换为人类可读的python

[英]Convert Unix timestamp value to human readable python

我有一个Unix时间戳,其值为1502878840 这个Unix时间戳值可以转换为人类可读,如Aug 16, 2017 10:20:40 我有2个以下python代码将1502878840转换为Aug 16, 2017 10:20:40 两者都给出相同的结果( Aug 16, 2017 10:20:40

  1. 第一种方法
    utc = datetime.fromtimestamp(1502878840)
  2. 第二种方法
    utc = datetime(1970, 1, 1) + timedelta(seconds=1502878840)

任何人都可以回答我2以下的问题。
1.两种方法的结果相同。 但是在Python代码的逻辑观点上,是否有任何可能导致结果差异的情况?
我问这个问题,因为我看到大多数python代码都使用First方法。
2.正如我在此读到的那样,Unix时间将在2038年1月19日03:14:08 GMT出现问题。
我运行一个时间戳,其日期是在19日,2038年( 2148632440 - Feb 01, 2038 10:20:40 )。 结果如下
第一种方法: ValueError: timestamp out of range for platform time_t
第二种方法: 2038-02-01 10:20:40
问题是:我可以使用第二种方法来解决“2038年问题”的问题吗?

引用文档

如果时间戳超出平台C localtime()或gmtime()函数支持的值范围,并且localtime()或gmtime()失败时出现OSError,则fromtimestamp()可能引发OverflowError。 这种情况通常限制在1970年到2038年。请注意,在非POSIX系统中,在时间戳概念中包含闰秒,fromtimestamp() 会忽略闰秒 ,然后可能有两个时间戳不同的时间戳一秒钟产生相同的日期时间对象。 另请参见utcfromtimestamp()。

第二个解决方案解决了您的问题:

utc = datetime(1970, 1, 1) + timedelta(seconds=1502878840)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM