Python 使用箭头从带有时区的字符串中分析日期和时间
我有 我如何用Arrow解析它,从而得到一个带有时区Python 使用箭头从带有时区的字符串中分析日期和时间,python,datetime,timezone,arrow-python,Python,Datetime,Timezone,Arrow Python,我有 我如何用Arrow解析它,从而得到一个带有时区tz的Arrow对象?以下默认值为UTC时间 import arrow s = '2015/12/1 19:00:00' tz = 'Asia/Hong_Kong' [30]中的:arrow.get(s'YYYY/M/D HH:mm:ss') 出[30]: 我知道.to功能,但它会转换时区,但不允许我更改为时区。尝试以下操作: In [30]: arrow.get(s, 'YYYY/M/D HH:mm:ss') Out[30]: <A
tz
的Arrow对象?以下默认值为UTC时间
import arrow
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
[30]中的:arrow.get(s'YYYY/M/D HH:mm:ss')
出[30]:
我知道.to
功能,但它会转换时区,但不允许我更改为时区。尝试以下操作:
In [30]: arrow.get(s, 'YYYY/M/D HH:mm:ss')
Out[30]: <Arrow [2015-12-01T19:00:00+00:00]>
我还没有资格添加评论,我只想和大家分享一个简单一点的关于时区str表达式的答案
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo=dateutil.tz.gettz(tz))
或者只是本地时区:
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo=tz)
或指定的ISO-8601样式:
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo='local')
根据当前设置,您还可以为arrow.get()
提供默认时区,例如:
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo='+08:00')
但是,到目前为止(版本0.12.1),存在一个缺点,即对于基于字符串的日期解析来说,这不起作用。幸运的是,这一点,因此Arrow的下一个版本将集成此修复程序。这从0.10.0开始对我有效:
导入箭头
s='2015/12/1199:00:00'
tz=‘亚洲/香港’
arrow.get(s'YYYY/M/D HH:mm:ss',tzinfo=tz)
#
但是,
arrow.get('2018-01-29 14:46',tzinfo='US/Central')
(即不带格式字符串)忽略了tzinfo
参数。在arrow文档中,我看到构造函数的工作方式类似于:“class arrow.arrow.arrow(年、月、日、小时=0,分钟=0,秒=0,微秒=0,tzinfo=None)”。这就足够解决你的问题了吗?它实际上返回了一个箭头对象和你想要的tz。这很有效!只是出于好奇,有没有可能对pytz也这么做?我得到了一些奇怪的结果:In[7]:arrow.get(s,'YYYY/M/D HH:mm:ss')。replace(tzinfo=pytz.timezone(tz))Out[7]:
不确定,但我认为arrow与dateutil比对比pytz更好。@mchangun:如果不想默默忽略错误,解析时间的正确方法是:pytz.timezone('Asia/hongkong')。localize(datetime.strptime)(s,'%Y/%m/%d%H:%m:%s'),is_dst=None)
@mchangun:btw,我发现即使经过两年的开发@mchangun:“更好”取决于您的应用程序。我使用的是pytz
,但对于大多数应用程序来说,它的级别可能太低。尽管您需要了解pytz引入localize()
,normalize()
方法,以正确使用它。
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
arrow.get(s, tzinfo=tz)