gpt4 book ai didi

Python 箭头未正确格式化日期

转载 作者:太空宇宙 更新时间:2023-11-04 05:07:31 24 4
gpt4 key购买 nike

我正在使用 Python Arrow用于格式化我得到的日期的包。

我的输入是:

datetime=2017-10-01T00:10:00Z and timezone=US/Pacific

我的预期输出是:

Sun 10/01 @ 6:10pm

我已经尝试了许多不同的日期时间转换,但我总是以 Sun 10/01 @ 12:10AM 结束,这与时区无关。

如果我试着说:

x = arrow.Arrow.strptime('2017-10-01T00:10:00Z', 
'%Y-%m-%dT%H:%M:%SZ',
tzinfo=tz.gettz('US/Pacific'))

x 等于:

<Arrow [2017-10-01T00:10:00-07:00]>

然后我说:

x.strftime('%a %m/%d @ %I:%M%p')

它输出

Sun 10/01 @ 12:10AM

Arrow 对象知道 -7:00 所证明的时区,但不会相应地格式化日期。

有什么想法吗?

最佳答案

我认为这个问题存在一些误解。

转换为时区

我看不出时间戳,

2017-10-01T00:10:00Z and timezone=US/Pacific

可以变成,

Sun 10/01 @ 6:10pm

这里有几个问题。

  1. 时间戳末尾的 Z 是一个时区,表示 Zulu 又名 GMT,因此时间戳已经有一个时区。
  2. 如果我们忽略问题 #1,那么要使午夜后​​ 10 分钟(减去 Z)的时间戳变为当天下午 6:10,则需要 +18 时区。该时区不存在。
  3. 美国/太平洋地区为 -7/-8,具体取决于一年中的不同时间。如果我们接受 Z 作为时区并希望转换为美国/太平洋时间,则时间应为 9 月 31 日下午 5:10

-7:00 是什么意思?

所以我猜测您的意图是时间戳实际上是祖鲁语,并且您想将该时间戳显示为美国/太平洋地区。如果这是真的,那么您需要做的是:

from dateutil import tz
import arrow
x = arrow.Arrow.strptime(
'2017-10-01T00:10:00Z',
'%Y-%m-%dT%H:%M:%SZ').to(tz.gettz('US/Pacific'))

print(x)
print(x.strftime('%a %m/%d @ %I:%M%p'))

这导致:

2017-09-30T17:10:00-07:00
Sat 09/30 @ 05:10PM

如前所述,您会注意到它们同时产生。不同之处在于第一个还有 -7:00。正如您在问题中暗示的那样,这并不表示时间需要删除 7 个小时才能显示在时区中,而是表示时间戳已经从祖鲁语中删除了 7 个小时。

关于Python 箭头未正确格式化日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44006354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com