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

时间:2017-08-16 05:49:57

标签: python unix-timestamp

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

1 个答案:

答案 0 :(得分:3)

引用documentation

  如果时间戳超出平台C localtime()或gmtime()函数支持的值范围,并且localtime()或gmtime()失败时出现OSError,则

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

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