從 javascript 的 datetime 的 timestamp 了解到,
python 無法直接獲得 timestamp 的值。
一般來說這個 timestamp 指的是Unix epoch (or Unix time or POSIX time or Unix timestamp)
根據這裡提到,也許是 datetime 的表示法有很多種,且精準度高於 timestamp,
所以就沒有直接提供方法。
但是也不是沒辦法。
在得到一個 datetime object 後
import datetime
x = datetime.datetime.now()# datetime.datetime(2011, 12, 23, 17, 17, 58, 625000)
第一種是藉 calendar 模組
>>> import calendar
>>> calendar.timegm(x.timetuple())
1324660678
這是得到標準時區的 timestamp,所以要轉回原來時區(local)的時間,不能用 fromtimestamp,
而是要用 utcfromtimestamp
>>> y = calendar.timegm(x.timetuple())
>>> z = datetime.datetime.fromtimestamp(y)
>>> z
datetime.datetime(2011, 12, 24, 1, 17, 58)
>>> y = calendar.timegm(x.timetuple())
>>> z = datetime.datetime.utcfromtimestamp(y)
>>> z
datetime.datetime(2011, 12, 23, 17, 17, 58)
另一個方法是用 time 模組,產生出來的 timestamp 就長不一樣。
這個用 fromtimestamp 就可以得到local datetime。
>>> import time
>>> y = time.mktime(x.timetuple())
>>> y
1324631878.0
>>> z = datetime.datetime.fromtimestamp(y)
>>> z
datetime.datetime(2011, 12, 23, 17, 17, 58)
這裡有個貼心的網站,幫你整理各語言如何得到 timestamp。
http://www.epochconverter.com/
在寫程式時一定要先測試一下數值是否如你所想喔
沒有留言:
張貼留言