首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python strptime()和时区?

Python strptime()和时区?
EN

Stack Overflow用户
提问于 2010-07-22 10:42:08
回答 3查看 236.4K关注 0票数 204

我有一个来自Blackberry IPD备份的CSV转储文件,使用IPDDump创建。这里的日期/时间字符串如下所示(其中EST是澳大利亚时区):

代码语言:javascript
复制
Tue Jun 22 07:46:22 EST 2010

我需要能够在Python中解析这个日期。首先,我尝试使用datettime中的strptime()函数。

代码语言:javascript
复制
>>> datetime.datetime.strptime('Tue Jun 22 12:10:20 2010 EST', '%a %b %d %H:%M:%S %Y %Z')

但是,由于某些原因,返回的datetime对象似乎没有任何与之关联的tzinfo

我确实在this page上读到过,显然datetime.strptime会默默地丢弃tzinfo,然而,我查看了文档,我找不到任何与此相关的文档here

我已经能够使用第三方Python库dateutil来解析日期,但是我仍然很好奇我是如何错误地使用内置的strptime()的?有没有办法让strptime()很好地利用时区呢?

EN

回答 3

Stack Overflow用户

发布于 2020-09-21 16:04:07

由于strptime返回一个具有tzinfo属性的datetime对象,因此我们可以简单地将其替换为所需的时区。

代码语言:javascript
复制
>>> import datetime

>>> date_time_str = '2018-06-29 08:15:27.243860'
>>> date_time_obj = datetime.datetime.strptime(date_time_str, '%Y-%m-%d %H:%M:%S.%f').replace(tzinfo=datetime.timezone.utc)
>>> date_time_obj.tzname()
'UTC'
票数 45
EN

Stack Overflow用户

发布于 2015-12-04 18:27:40

您的时间字符串与rfc 2822 (date format in email, http headers)中的时间格式类似。你可以只使用stdlib来解析它:

代码语言:javascript
复制
>>> from email.utils import parsedate_tz
>>> parsedate_tz('Tue Jun 22 07:46:22 EST 2010')
(2010, 6, 22, 7, 46, 22, 0, 1, -1, -18000)

查看为各种Python版本生成支持时区的datetime对象的解决方案:parsing date with timezone from an email

在此格式中,EST is semantically equivalent to -0500。不过,总的来说,a timezone abbreviation is not enough, to identify a timezone uniquely

票数 12
EN

Stack Overflow用户

发布于 2019-09-05 23:44:49

遇到了这个问题。

我最终做了什么:

代码语言:javascript
复制
# starting with date string
sdt = "20190901"
std_format = '%Y%m%d'

# create naive datetime object
from datetime import datetime
dt = datetime.strptime(sdt, sdt_format)

# extract the relevant date time items
dt_formatters = ['%Y','%m','%d']
dt_vals = tuple(map(lambda formatter: int(datetime.strftime(dt,formatter)), dt_formatters))

# set timezone
import pendulum
tz = pendulum.timezone('utc')

dt_tz = datetime(*dt_vals,tzinfo=tz)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3305413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档