我需要从格式良好的字符串(例如u'Wed Jun 24 20:19:10 PDT 2015'
)计算自纪元以来的秒数。以下代码执行此操作:
def seconds_from_epoch(date, date_pattern='%a %b %d %H:%M:%S %Z %Y'):
epoch = int(time.mktime(time.strptime(date, date_pattern)))
return epoch
>>> d=u'Wed Jun 24 20:19:10 PDT 2015'
>>> s=seconds_from_epoch(d)
>>> s
1435202350
问题是字符串来自不可预测的各种时区,上面的解决方案只有在时区与正在运行的Python脚本本身相同时(或者显然是GMT / UTC,这没有帮助)才有效。
所以我需要的是与上面的代码完全相同的东西,但适用于所有时区。
答案 0 :(得分:2)
shape.setOptions({ zIndex: zIndex });
解析器几乎可以将任何字符串转换为dateutil
对象,因此您甚至可以放松格式良好的约束;但无论如何,Python 3中的datetime
个对象具有方便的datetime
方法:
timestamp
由于您可能正在使用Python 2,因此这是一个手动计算:
>>> d = dateutil.parser.parse('Wed Jun 24 20:19:10 PDT 2015')
>>> d.timestamp()
1435166350.0
>>> d = dateutil.parser.parse('Wed Jun 24 20:19:10 UTC 2015')
>>> d.timestamp()
1435177150.0
答案 1 :(得分:1)
请参阅Python strptime() and timezones?特别回答Joe Shaw,
我会使用https://dateutil.readthedocs.org/en/latest/,dateutil库已经处理了时区。你没有从strptime获得时间日期的原因是它不支持时区。
一个天真的对象没有足够的信息来明确地相对于其他日期/时间对象定位自己。天真物体是代表协调世界时(UTC),当地时间还是其他某个时区的时间完全取决于程序,就像程序一样,特定数字是代表米,英里还是质量。天真的物体易于理解和使用,代价是忽略了现实的某些方面。
请参阅https://docs.python.org/2/library/datetime.html#datetime.datetime.strptime
答案 2 :(得分:0)
def total_seconds(dt): #just in case you are using a python that the datetime library does not provide this automagically
print dt.days*24*60+dt.seconds
from dateutil.parser import parse as date_parse
print total_seconds(date_parse(date_string))
您需要
pip install python-dateutil