从日、月、年生成Python时间戳

56 投票
3 回答
103903 浏览
提问于 2025-04-17 12:44

在Python中,有没有办法仅通过日期对象里的日、月、年来创建一个UNIX时间戳(也就是秒数)?我其实想知道在午夜时分(小时、分钟和秒都是0)这个时间戳会是什么样的。

谢谢!

3 个回答

2

你可以通过计算从某个日期到“纪元时间”(也就是1970年1月1日)之间的秒数来实现这个功能:

from datetime import datetime

epoch = datetime(1970, 1, 1)
d = datetime(2012, 2, 10)

print (d - epoch).total_seconds()
5

你还可以使用 datetime.combine() 这个方法。

>>> import datetime
>>> import time
>>> date1 = datetime.date(year=2012,day=02,month=02)
>>> date2 = datetime.datetime.combine(date1,datetime.time())
>>> date2
datetime.datetime(2012, 2, 2, 0, 0)
>>> tstamp = time.mktime(date2.timetuple())
>>> tstamp
1328121000.0

结果会受到本地时区的影响(在这个例子中是印度标准时间)。我希望有人能告诉我怎么得到格林威治标准时间的结果。

103
>>> import time
>>> import datetime
>>> dt = datetime.datetime.strptime('2012-02-09', '%Y-%m-%d')
>>> time.mktime(dt.timetuple())
1328774400.0
>>> dt = datetime.datetime(year=2012, month=2, day=9)
>>> time.mktime(dt.timetuple())
1328774400.0

--或者--

如果你想了解其他时间类型,比如小时和秒,可以去这里看看:https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior

撰写回答