将 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. 2种方法的结果是一样的。但是从Python代码的逻辑角度来看,有没有可能导致结果不同的case?
我问这个问题是因为我看到大多数 python 代码都使用 First 方法。
2. 根据我的阅读 here,Unix 时间将在 2038 年 1 月 19 日 03:14:08 GMT 出现问题。
我 运行 一个日期在 19.Jan 之后的时间戳,2038 (2148632440- Feb 01, 2038 10:20:40)。结果如下
第一种方法:ValueError: timestamp out of range for platform time_t
第二种方法:2038-02-01 10:20:40
问题是:我可以使用第二种方法来克服"Year 2038 problem"的问题吗?

引用documentation

fromtimestamp() may raise OverflowError, if the timestamp is out of the range of values supported by the platform C localtime() or gmtime() functions, and OSError on localtime() or gmtime() failure. It’s common for this to be restricted to years in 1970 through 2038. Note that on non-POSIX systems that include leap seconds in their notion of a timestamp, leap seconds are ignored by fromtimestamp(), and then it’s possible to have two timestamps differing by a second that yield identical datetime objects. See also utcfromtimestamp().

第二种方案解决了你的问题:

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