我需要使用Python< = 2.7
以格式转换存储在变量中的时间07/20-10:38:04.360700
到纪元时间(自1970年1月1日午夜以来),就像这样
1405852684.360700
最好导入时间模块,还是只拆分并使用一些数学计算?
答案 0 :(得分:2)
如果字符串日期是相对于UTC的,那么:
In [31]: import datetime as DT
In [32]: text = '07/20-10:38:04.360700'
In [33]: date = DT.datetime.strptime('2014/'+text, '%Y/%m/%d-%H:%M:%S.%f')
In [34]: (date - DT.datetime(1970,1,1)).total_seconds()
Out[34]: 1405852684.3607
如果字符串日期指的是与某个其他时区相关的日期,那么您可以使用pytz
在进行计算之前使日期时区知道。例如,
import pytz
import datetime as DT
text = '07/20-10:38:04.360700'
tz = pytz.timezone('US/Eastern')
date = DT.datetime.strptime('2014/'+text, '%Y/%m/%d-%H:%M:%S.%f')
# interpret the date as coming from US/Eastern
date_tz = tz.localize(date)
epoch = DT.datetime(1970,1,1, tzinfo=pytz.utc)
timestamp = (date_tz - epoch).total_seconds()
print(repr(timestamp))
# 1405867084.3607
答案 1 :(得分:1)
你可以使用python的timetuple()
函数(和一点点数学)
>>> import datetime
>>> import time
>>> v = datetime.datetime(2014, 7, 20, 10, 38, 4, 360700)
>>> time.mktime(v.timetuple())
1405870684.0
现在我们需要你的微秒:
>>> time.mktime(v.timetuple())+(v.microsecond/1000000.)
1405870684.3607
答案 2 :(得分:1)
你没有指定年份,所以在这里我假设它是当年。以下假设所有时间都是UTC,即不是本地时间。
from datetime import datetime
time_string = '07/20-10:38:04.360700'
dt = datetime.strptime(time_string, '%m/%d-%H:%M:%S.%f')
dt = dt.replace(year=datetime.today().year)
>>> (dt - datetime.utcfromtimestamp(0)).total_seconds()
1405852684.3607