我有一个'2009/05/13 19:19:30 -0400'形式的日期字符串.对于尾随时区规范,似乎以前版本的Python可能支持strptime中的%z格式标记,但2.6.x似乎已经删除了它.
将此字符串解析为日期时间对象的正确方法是什么?
在Python中,我如何转换这样的字符串:
星期四,2010年12月16日12:14:05 +0000
符合ISO 8601格式,同时保留时区?
请注意,原始日期是字符串,输出也应该是字符串,不是datetime或类似的.
不过,我使用第三方库没有问题.
我有以下字符串"2017-03-30 08:25:00CET",我想将其转换为日期时间tz感知对象.
根据这个问题,从python 3.2可以只使用datetime模块完成.另外,从文档中我看到了
Run Code Online (Sandbox Code Playgroud)%z | UTC offset in the form +HHMM or -HHMM (empty string if the object is naive). | (empty), +0000, -0400, +1030 %Z | Time zone name (empty string if the object is naive). | (empty), UTC, EST, CST
所以我尝试以下方法
datetime.strptime(dep_dt, '%Y-%m-%d %H:%M:%S%Z')
Run Code Online (Sandbox Code Playgroud)
我没有得到任何错误,但是我得到的对象不是tz意识到的
datetime.datetime(2017, 3, 30, 8, 25)
Run Code Online (Sandbox Code Playgroud)
另一方面,如果我将我的字符串转换为"2017-03-30 08:25:00+0200"然后将其转换为对象
datetime.strptime(dep_dt, '%Y-%m-%d %H:%M:%S%z')
我确实得到了一个tz感知的日期时间:
datetime.datetime(2017, 3, 30, 8, 25, tzinfo=datetime.timezone(datetime.timedelta(0, 7200)))
Run Code Online (Sandbox Code Playgroud)
任何想法为什么它适用%z但不与%Z …
我正在使用默认的python日期时间字符串格式和JSON Web服务.
然后,我试图将它与实际的日期时间进行比较.我也在使用时区pytz.utc.
这是我的字符串日期:
print date
2013-02-26 21:28:37.261134+01:00
Run Code Online (Sandbox Code Playgroud)
尝试将我的字符串转换为日期时间(使用时区编辑pytz):
if datetime.strptime(date, '%Y-%m-%d %H:%M:%S.%f+%Z') < datetime.now(pytz.utc):
Run Code Online (Sandbox Code Playgroud)
不幸的是,它不起作用.
ValueError: time data '2013-02-26 21:28:37.261134+01:00' does not match format '%Y-%m-%d %H:%M:%S.%f%Z'
Run Code Online (Sandbox Code Playgroud)
谁能告诉我strptime格式的正确语法,使用我的约会?
我正在尝试解析这个日期时间字符串,但还没有成功,我怎么能得到它?
d = '2014-05-01 18:10:38-04:00'
datetime.datetime.strptime(d,'%Y-%m-%d %H:%M:%S-%Z')
ValueError: time data '2014-05-01 18:10:38-04:00' does not match format '%Y-%m-%d %H:%M:%S%Z'
Run Code Online (Sandbox Code Playgroud)