我試圖編寫一對函數dt
和ut
,它在正常的unix時間(秒後1970-01-01 00:00:00 UTC)和一個Python日期時間對象。將unixtime轉換爲日期時間對象並返回(時間轉換函數反轉)
如果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秒(1小時)小於第一。 我認爲這隻發生在非常特別的unixtimes,也許在那個夏令時跳過的時候。 但是有沒有辦法寫dt
和ut
,所以他們是真正的彼此反轉?
相關問題:Making matplotlib's date2num and num2date perfect inverses
順便說一句,如果功能不只是調用了另一個與功能相同的參數,然後你可以分配它:'dt = datetime.datetime.utcfromtimestamp'。函數是Python中的一等公民:您可以將它們作爲參數傳遞給另一個函數,從函數返回等。 – jfs
啊,很好,很棒!這樣做更有效率還是隻是一個簡潔的問題?那麼'def f(x):return foo(x)'vs'f = lambda x:foo(x)'? (我的回憶是那些在功能和效率上都是等價的)。 – dreeves
'f = g'意味着f,g是兩個引用同一個函數的名字。 'def'和'lambda'創建新函數。 – jfs