如何在python中将字符串中的日期转换为纪元时间

时间:2015-02-11 21:34:01

标签: python

我有这样的价值:

var="11-feb-15:04:02:21"

我需要转换为纪元时间:

我试过了:

var.strftime('%s')

我收到此错误:

AttributeError: 'str' object has no attribute 'strftime'

有什么想法吗? 我

2 个答案:

答案 0 :(得分:3)

我希望您将通过此示例查找相应的文档。

>>> s = "11-feb-15:04:02:21"
>>> timestruct = time.strptime(s, "%d-%b-%y:%H:%M:%S")
>>> time.mktime(timestruct)
1423623741.0

格式说明符在此处定义:https://docs.python.org/2/library/time.html#time.strftime

文档也很清楚,当您想要从 struct_time在本地时间转换为秒以来时,您需要使用mktime()

答案 1 :(得分:1)

将表示当地时间的时间字符串转换为自Epoch"以来的"秒:

#!/usr/bin/env python
import time
from datetime import datetime
import pytz # $ pip install pytz
from tzlocal import get_localzone # $ pip install tzlocal

tt = time.strptime("11-feb-15:04:02:21", "%d-%b-%y:%H:%M:%S")
naive_dt = datetime(*tt[:5]+(min(tt[5], 59),))
dt = get_localzone().localize(naive_dt, is_dst=None)
timestamp = (dt - datetime(1970, 1, 1, tzinfo=pytz.utc)).total_seconds()
print(timestamp) # -> 1423623741.0

如果输入时间不明确或不存在,此解决方案会引发异常,例如,在DST转换期间 - 将is_dst参数设置为True / False以消除时间歧义和/或调用tz.normalize()调整不存在的当地时间的方法。

要获得正确的utc偏移量,使用tz数据库(get_localzone()将本地时区作为pytz时区对象返回。)

time.strptime()用于支持闰秒,例如,"1-jul-15:1:59:60"转换为datetime(2015, 7, 1, 1, 59, 59) - 注意:秒被截断为59