[英]Converting a formatted time string to milliseconds
我想將'2015-09-15T17:13:29.380Z'
轉換為毫秒。
起初我用過:
time.mktime(
datetime.datetime.strptime(
"2015-09-15T17:13:29.380Z",
"%Y-%m-%dT%H:%M:%S.%fZ"
).timetuple()
)
我得到1442330009.0
- 沒有微秒。 我認為time.mktime
將數字四舍五入到最接近的time.mktime
。
最后我做了:
origTime = '2015-09-15T17:13:29.380Z'
tupleTime = datetime.datetime.strptime(origTime, "%Y-%m-%dT%H:%M:%S.%fZ")
microsecond = tupleTime.microsecond
updated = float(time.mktime(tupleTime.timetuple())) + (microsecond * 0.000001)
有沒有更好的方法來做到這一點 ,我如何使用時區 ?
您的輸入時間是UTC; 除非您的本地時區始終為UTC,否則在此處使用time.mktime()
是不正確的。
有兩個步驟:
將輸入rfc 3339時間字符串轉換為表示UTC時間的日期時間對象
from datetime import datetime utc_time = datetime.strptime("2015-09-15T17:13:29.380Z", "%Y-%m-%dT%H:%M:%S.%fZ")
你已經完成了。 另請參閱將RFC 3339時間轉換為標准Python時間戳
將UTC時間轉換為以毫秒表示的POSIX時間 :
from datetime import datetime, timedelta milliseconds = (utc_time - datetime(1970, 1, 1)) // timedelta(milliseconds=1) # -> 1442337209380
對於適用於Python 2.6-3 +的版本,請參閱如何在Python中將epoch(unix時間)之后的datetime對象轉換為毫秒?
不幸的是,在timetuple
沒有毫秒。 但是,您不需要timetuple
。 對於時間戳,只需致電
datetime.strptime(...).timestamp()
至於時區,請查看datetime
tzinfo
參數。
編輯 : tzinfo
>>> d
datetime.datetime(2015, 9, 15, 17, 13, 29, 380000)
>>> d.timestamp()
1442330009.38
>>> import pytz
>>> d.replace(tzinfo=pytz.timezone("US/Eastern")).timestamp()
1442355209.38
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.