簡體   English   中英

將時間戳自紀元轉換為 datetime.datetime

[英]Convert timestamp since epoch to datetime.datetime

自紀元以來,我有以下時間戳:

Timestamp
1346114717972
1354087827000

如何將這些時間戳轉換為某些特定的輸出格式,例如mm/dd/yyyy hr:min:sec

我試圖將它們轉換為datetime.datetime但它失敗了:

 >>> datetime.datetime.fromtimestamp(1346114717972)
 Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 ValueError: timestamp out of range for platform time_t

我怎樣才能做到這一點?

我會使用time模塊

>>> import time
>>> time.gmtime(1346114717972/1000.)
time.struct_time(tm_year=2012, tm_mon=8, tm_mday=28, tm_hour=0, tm_min=45, tm_sec=17, tm_wday=1, tm_yday=241, tm_isdst=0)  

這顯示了 UTC/GMT 時間的時間戳。

時間戳除以 1000,因為您提供的戳記是自紀元以來的毫秒數,而不是秒數。

然后使用strftime格式化如下:

>>> time.strftime('%m/%d/%Y %H:%M:%S',  time.gmtime(1346114717972/1000.))
'08/28/2012 00:45:17'

假設毫秒分辨率:

import datetime

s = '1346114717972'
fmt = "%Y-%m-%d %H:%M:%S"

# local time
t = datetime.datetime.fromtimestamp(float(s)/1000.)
print t.strftime(fmt) # prints 2012-08-28 02:45:17

# utc time
t_utc = datetime.datetime.utcfromtimestamp(float(s)/1000.)
print t_utc.strftime(fmt) # prints 2012-08-28 00:45:17

查看strftime()strptime()行為的文檔。

這是我見過的最簡單的方法——

$ python
Python 2.7.5 (default, Nov  6 2016, 00:28:07) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> print(time.strftime('%Y-%m-%dT%H:%M:%S %Z',time.localtime(time.time())))
2018-05-02T13:21:44 IST

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM