我正在使用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
所证明的时区,但没有相应地格式化日期。
有什么想法吗?
答案 0 :(得分:1)
我认为这个问题存在一些误解。
我看不出时间戳,
2017-10-01T00:10:00Z and timezone=US/Pacific
可以成为,
Sun 10/01 @ 6:10pm
这里有几个问题。
Zulu
也称为GMT,因此时间戳已经有时区。所以我猜你的意思是时间戳实际上是祖鲁语,而你希望将时间戳显示为美国/太平洋。如果这是真的,那么你需要这样做:
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个小时。