将字符串更改为日期时间对象,格式为“2016-03-07 14:42:48.901013 + 05:30”

时间:2016-04-12 06:40:38

标签: python django datetime

我的时间为2016-03-07 14:42:48.901013+05:30,但这是字符串形式。我希望将它作为日期时间对象类型,因为我想将它与django的update_ts(auto_add_now)字段进行比较。任何帮助实现这一目标将受到高度赞赏。

我尝试过使用x = datetime.strptime(ts, '%Y-%m-%dT%H:%M:%S.%UTZ'),但它对我没用。

3 个答案:

答案 0 :(得分:2)

您应该使用正确的格式'%Y-%m-%d %H:%M:%S.%f'并忽略时区:ts.split(' +')[0]

x= datetime.strptime(ts.split('+')[0],'%Y-%m-%d %H:%M:%S.%f')

ofcouse你应该自己处理时区或使用默认时区。

您也可以使用dateutil.parser.parse
首先安装python-dateutil包:pip install python-dateutil
然后:

from dateutil.parser import parse
x = parse(ts)
datetime.datetime(2016, 3, 7, 14, 42, 48, 901013, tzinfo=tzoffset(None, 19800))

也请查看此参考:Convert timestamps with offset to datetime obj using strptime

答案 1 :(得分:1)

您可以使用dateutil解析器执行此操作

使用dateutil之前,请使用pip install python-dateutil

进行安装
from dateutil import parser

your_date_string = '2016-03-07 14:42:48.901013+05:30'

yourDate = parser.parse(your_date_string)
# yourDate -> datetime.datetime(2016, 3, 7, 14, 42, 48, 901013, tzinfo=tzoffset(None, 19800))

答案 2 :(得分:0)

如果您只想要Datetime对象,

a = '2016-03-07 14:42:48.901013+05:30'.split('+')[0]
get_dateiobj =  datetime.strptime(a,"%Y-%m-%d %H:%M:%S.%f")

它将返回到您的时区

dateutil also the更好的方法看起来像angularjs - momentjs。

您可以使用此解析多个dateformat。

pip install python-dateutil
你可以解析不同的格式,比如

from dateutil.parser import *
now = parse("2016-03-07 14:42:48.901013+05:30")