【发布时间】:2012-10-26 23:40:09
【问题描述】:
我正在尝试编写一对函数,dt 和 ut,它们在正常的 unix 时间(自 1970-01-01 00:00:00 UTC 以来的秒数)和 Python 日期时间之间来回转换对象。
如果 dt 和 ut 是正确的逆,那么这段代码将打印两次相同的时间戳:
import time, datetime
# Convert a unix time u to a datetime object d, and vice versa
def dt(u): return datetime.datetime.fromtimestamp(u)
def ut(d): return time.mktime(d.timetuple())
u = 1004260000
print u, "-->", ut(dt(u))
唉,第二个时间戳比第一个少 3600 秒(一个小时)。
我认为这只发生在非常特殊的 unixtime 上,也许在夏令时跳过的那个小时内。
但是有没有办法写出dt 和ut,所以它们是彼此真正的倒数?
相关问题:Making matplotlib's date2num and num2date perfect inverses
【问题讨论】:
-
顺便说一句,如果函数什么都不做,只是用相同的参数调用另一个函数,那么你可以分配它:
dt = datetime.datetime.utcfromtimestamp。函数是 Python 中的一等公民:您可以将它们作为参数传递给另一个函数、从函数返回等。 -
啊,很好,很好!这样做更有效还是只是简洁的问题?
def f(x): return foo(x)与f = lambda x: foo(x)怎么样? (我记得它们在功能和效率方面都是等效的。) -
f = g表示 f,g 是指同一个函数的两个名称。def和lambda创建新函数。
标签: python date datetime time dst