簡體   English   中英

Python3時間戳到Unix時間(以毫秒為單位)

[英]Python3 Timestamp to unix time (with sometime milliseconds)

我正在嘗試將時間戳轉換為Unix時間。

時間戳看起來像這樣:
2018-01-16T20:26:16.35

所以現在我使用以下代碼:

timestamp = '2018-01-16T20:26:16.35'
ts = timestamp.replace("T", " ")
tsUnix = time.mktime(datetime.datetime.strptime(ts, "%Y-%m-%d %H:%M:%S.%f").timetuple())

有時從那里獲取時間戳的api給我的時間沒有毫秒
這將導致錯誤,“與格式不匹配”​​。 (Du,%f不在那兒)

我需要編寫解決方法的腳本還是為此提供功能? 有沒有更好的方法從原始時間碼中刪除“ T”?

這是使用tryexcept處理您的問題的一種方法:

import time
import datetime

def get_ts_unix(ts):
    try:
        tsUnix = time.mktime(
            datetime.datetime.strptime(ts, "%Y-%m-%dT%H:%M:%S.%f").timetuple()
        )
    except ValueError:
        tsUnix = time.mktime(
            datetime.datetime.strptime(ts, "%Y-%m-%dT%H:%M:%S").timetuple()
        )
    return tsUnix

例:

timestamps = ['2018-01-16T20:26:16.35', '2018-01-16T20:26:16']
for ts in timestamps:
    print("%-24s: %f" % (ts, get_ts_unix(ts)))

輸出:

2018-01-16T20:26:16.35  : 1516152376.000000
2018-01-16T20:26:16     : 1516152376.000000

要跳過ts = timestamp.replace("T", " ") ,請在格式字符串中添加一個T

timestamp = '2018-01-16T20:26:16.35'
time.mktime(datetime.datetime.strptime(timestamp, "%Y-%m-%dT%H:%M:%S.%f").timetuple())
# returns 1516130776.0

要修復毫秒,您可以使用python-dateutil包

from dateutil import parser

raw_timestamp = '2018-01-16T20:26:16.35'
parsed_time = parser.parse(raw_timestamp)
timestamp = parsed_time.timestamp()

暫無
暫無

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

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