使用箭头从带有时区的字符串中解析日期和时间
Parse date and time from string with time zone using Arrow
我有
import arrow
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
我如何用 Arrow 解析它,以便我得到一个时区为 tz
的 Arrow 对象?以下默认为UTC时间。
In [30]: arrow.get(s, 'YYYY/M/D HH:mm:ss')
Out[30]: <Arrow [2015-12-01T19:00:00+00:00]>
我知道 .to
函数,但它可以转换时区,但不允许我更改时区。
试试这个:
arrow.get(s, 'YYYY/M/D HH:mm:ss', tzinfo=tz)
如果您还使用 dateutil,这也适用:
arrow.get(s, 'YYYY/M/D HH:mm:ss', tzinfo=dateutil.tz.gettz(tz))
这也是:
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo=dateutil.tz.gettz(tz))
我还没有资格添加评论,只想与时区 str 表达式分享一个更简单的答案版本。
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo=tz)
或简单的本地时区:
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo='local')
或指定的 ISO-8601 风格:
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo='+08:00')
根据当前 documentation,您还可以为 arrow.get()
提供默认时区,例如:
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
arrow.get(s, tzinfo=tz)
但是,截至目前(版本 0.12.1),存在一个不适用于 string-based 日期解析的缺点。幸运的是,这个 has been fixed,因此 Arrow 的下一个版本将集成此修复。
从 0.10.0 开始这对我有用:
import arrow
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
arrow.get(s, 'YYYY/M/D HH:mm:ss', tzinfo=tz)
# <Arrow [2015-12-01T19:00:00+08:00]>
但是,arrow.get('2018-01-29 14:46', tzinfo='US/Central')
(即没有格式字符串)会忽略 tzinfo
参数。
我有
import arrow
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
我如何用 Arrow 解析它,以便我得到一个时区为 tz
的 Arrow 对象?以下默认为UTC时间。
In [30]: arrow.get(s, 'YYYY/M/D HH:mm:ss')
Out[30]: <Arrow [2015-12-01T19:00:00+00:00]>
我知道 .to
函数,但它可以转换时区,但不允许我更改时区。
试试这个:
arrow.get(s, 'YYYY/M/D HH:mm:ss', tzinfo=tz)
如果您还使用 dateutil,这也适用:
arrow.get(s, 'YYYY/M/D HH:mm:ss', tzinfo=dateutil.tz.gettz(tz))
这也是:
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo=dateutil.tz.gettz(tz))
我还没有资格添加评论,只想与时区 str 表达式分享一个更简单的答案版本。
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo=tz)
或简单的本地时区:
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo='local')
或指定的 ISO-8601 风格:
arrow.get(s, 'YYYY/M/D HH:mm:ss').replace(tzinfo='+08:00')
根据当前 documentation,您还可以为 arrow.get()
提供默认时区,例如:
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
arrow.get(s, tzinfo=tz)
但是,截至目前(版本 0.12.1),存在一个不适用于 string-based 日期解析的缺点。幸运的是,这个 has been fixed,因此 Arrow 的下一个版本将集成此修复。
从 0.10.0 开始这对我有用:
import arrow
s = '2015/12/1 19:00:00'
tz = 'Asia/Hong_Kong'
arrow.get(s, 'YYYY/M/D HH:mm:ss', tzinfo=tz)
# <Arrow [2015-12-01T19:00:00+08:00]>
但是,arrow.get('2018-01-29 14:46', tzinfo='US/Central')
(即没有格式字符串)会忽略 tzinfo
参数。