日期时间 - 字符串往返

时间:2015-11-01 15:39:02

标签: python datetime python-3.x date-arithmetic date-comparison

这给了我一个字符串。如何返回日期时间对象,以便我可以进行日期算术等等?

from datetime import datetime, timezone
s = datetime.now(timezone.utc).astimezone().isoformat()

此代码段会生成一个我很满意的字符串,但如何返回datetime

2015-11-01T07:49:35.106745-08:00

2 个答案:

答案 0 :(得分:1)

这很有效,但它比我想要的要繁忙得多。

dt = datetime.strptime(s[:-3]+s[-2:], "%Y-%m-%dT%H:%M:%S.%f%z")
print(dt)

答案 1 :(得分:0)

在进行日期算术之前,请不要使用isoformat()来转换时间。

试试这个:

import datetime, time

d0 = datetime.datetime.now()
time.sleep(0.1)
d1 = datetime.datetime.now()

print('trip began:{}'.format(d0.isoformat()))
print('trip ended:{}'.format(d1.isoformat()))
delta = d1 - d0
print('that took {} seconds'.format(delta.total_seconds()))

以上并没有为时区和夏令时做正确的事情,但你原来的问题似乎有那个部分在运作:

datetime.now(timezone.utc).astimezone()

示例输出:

trip began:2015-11-01T08:52:28.326764
trip ended:2015-11-01T08:52:29.331763
that took 1.004999 seconds