【发布时间】:2014-09-04 03:40:55
【问题描述】:
我正在尝试 dateutil.parser.parse() 使用时区感知日期时间解析默认的 str(datetime.datetime.now()) 输出。但是,parse() 似乎丢失了时区信息,并将其替换为本地时区。以下是 IPython 输出:
In [1]: from django.utils.timezone import now
In [3]: import dateutil
In [4]: t = now()
In [6]: print t
2014-07-14 08:51:49.123342+00:00
In [7]: st = unicode(t)
In [8]: print dateutil.parser.parse(st)
2014-07-14 08:51:49.123342+02:00
据我所知,dateutil 在猜测日期格式时会进行一些启发式操作,这里可能会出错。
如何给出准确的日期时间格式来解析时区感知的日期时间?
更好 - 如果知道格式如何仅使用 Python stdlib 解析此日期时间,而不依赖于 dateutil?
【问题讨论】:
-
我知道
USE_TZ- 但是这个问题是关于解析日期和dateutil行为,而不是关于Django。 -
那你为什么用
django.util.timezone? -
我想用时区生成一个日期时间。这是一种最简单的方法。我想我的问题很具体 - 请告诉我问题中有什么可以改进的地方。
-
你问题的前提是错误的——
datetime.datetime.now()没有给你一个时区感知对象;因此,当您执行str(datetime.datetime.now())时,字符串中没有时区信息。您的问题基本上是“如何将表示具有时区偏移的日期和时间的字符串解析为日期时间对象”? -
Np。它发生在每个人身上:)
标签: python django python-2.7 datetime python-dateutil