我试图将时间戳转换为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给我的时间没有毫秒。
这将导致错误,'与格式不匹配'。 (Duh,%f不在那里)
我是否需要编写解决方法脚本或是否有此功能?是否有更好的方法来剥离" T"从原始时间码?
答案 0 :(得分:2)
以下是使用try
和except
处理问题的一种方法:
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
答案 1 :(得分:0)
要跳过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()