Python:将年/月/日/小时/分钟/秒转换为自1970年1月1日起的秒数

8 投票
5 回答
15520 浏览
提问于 2025-04-17 08:18

我知道怎么在C和Java中做这个,但我不知道有什么快速的方法可以把年、月、日、小时、分钟和秒转换成自1970年1月1日以来的秒数。

有人能帮我吗?

到目前为止,我已经弄明白了怎么创建一个datetime对象,但我就是无法得到自那个时间点以来的秒数。

(补充:我的问题其实是这个问题的反向:Python:从自1970年起的秒数到相对日期

5 个回答

3

在编程中,有时候我们需要把一些数据放到一个地方,方便以后使用。这就像把东西放进一个盒子里,等需要的时候再拿出来。

有些时候,我们会用到一个叫做“数组”的东西。数组就像一个排成一行的盒子,每个盒子里可以放一个数据。你可以通过盒子的编号来找到里面的东西。

另外,还有一种叫做“对象”的东西。对象就像一个大盒子,里面可以放很多不同的东西,比如数字、文字,甚至其他的盒子。你可以给这些东西起名字,这样就更容易找到它们。

在编程时,我们常常需要把这些数据进行处理,比如计算、排序或者查找。就像在整理你的书架,把书按字母顺序排好,或者找一本特定的书。

总之,编程就是在用这些“盒子”来存放和处理信息,让计算机能够理解并执行我们的指令。

import calendar

calendar.timegm(datetime_object.utctimetuple())
7

你可以使用 datetime.datetime(1970, 1, 1) 作为一个参考点,然后从一个 datetime.timedelta 对象中获取总秒数,方法如下:

from datetime import datetime

delta = your_date - datetime(1970, 1, 1)
delta.total_seconds()
13

使用 timetupleutctimetuple 方法可以获取时间元组,然后用 time.mktime 将其转换为时间戳。

>>> import datetime
>>> dt = datetime.datetime(2011, 12, 13, 10, 23)
>>> import time
>>> time.mktime(dt.timetuple())
1323793380.0

这里面有一个有趣的bug,相关信息可以查看 http://bugs.python.org/issue2736,这个内容值得一读,任何想要转换为时间戳的人都应该看看。根据那个讨论,正确的方法是:

timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)

撰写回答