【发布时间】:2017-08-16 05:49:57
【问题描述】:
我有一个 Unix 时间戳,其值为 1502878840。这个 Unix 时间戳值可以转换为人类可读的值,例如 Aug 16, 2017 10:20:40。
我有 2 个以下 python 代码将1502878840 转换为Aug 16, 2017 10:20:40。他们都给出了相同的结果 (Aug 16, 2017 10:20:40)
- 第一种方法
utc = datetime.fromtimestamp(1502878840) - 第二种方法
utc = datetime(1970, 1, 1) + timedelta(seconds=1502878840)
谁能回答我以下 2 个问题。
1. 两种方法的结果相同。但是从Python代码的逻辑来看,有没有什么情况会导致结果的不同呢?
我问这个问题是因为我看到大多数 python 代码都使用第一种方法。
2.当我阅读here时,Unix时间将在2038年1月19日格林威治标准时间03:14:08出现问题。
我运行了一个日期在 2038 年 1 月 19 日之后的时间戳(2148632440-Feb 01, 2038 10:20:40)。结果如下
第一种方法:ValueError: timestamp out of range for platform time_t
第二种方法:2038-02-01 10:20:40
问题是:我可以使用第二种方法来克服“2038年问题”的问题吗?
【问题讨论】:
-
第一种方法需要是
utcfromtimestamp()。 -
@Mark Tolonen:非常感谢您的建议。我再次阅读了日期时间手册。最好使用
utcfromtimestamp
标签: python unix-timestamp