【问题标题】:Convert UTC datetime to Pacific datetime in Python在 Python 中将 UTC 日期时间转换为太平洋日期时间
【发布时间】:2018-09-15 04:53:32
【问题描述】:

如何在 Python 中将 UTC 转换为太平洋时区?

我试过了,但它不起作用

from datetime import datetime
from pytz import timezone

fmt = "%Y-%m-%d %H:%M:%S %Z%z"

# Current time in UTC
now_utc = 1348283733848

# Convert to US/Pacific time zone
now_pacific = now_utc.astimezone(timezone('US/Pacific'))
print now_pacific.strftime(fmt)

错误:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
AttributeError: 'long' object has no attribute 'astimezone

我想将此 UTC 1348283733848 转换为人类可读格式的太平洋时区

【问题讨论】:

  • 请发布您收到的错误信息。
  • @ErikCederstrand 这是错误消息 Traceback (最近一次调用最后一次): File "", line 2, in AttributeError: 'long' object has no attribute 'astimezone跨度>
  • now_utclong 因为你没有引用它。您需要将now_utc 设为日期时间对象,而不是字符串或整数。据推测,您需要找到一个匹配的fmt 字符串,或者跳过时区部分,只需将时间戳值转换为日期时间。
  • 这行得通:now_pacific = datetime.fromtimestamp(now_utc / 1000, tz=timezone('UTC')).astimezone(timezone('US/Pacific')),但日期/时间离“now”有点远。不确定这是否是您想要的。

标签: python datetime timezone utc


【解决方案1】:

你可以使用

datetime.utctimestamp(now_utc).strftime("%H:%M:%S %Z%")
【解决方案2】:

也许可以

datetime.datetime.utcfromtimestamp(now_utc) - datetime.timedelta(hours=8)

【讨论】:

  • 偏移算术是 1000% 错误 - DST 呢?你的答案错了半年。这就是为什么.astimezone(timezone('US/Pacific')) 用于使用时区规则转换时间的原因。 DST 规则也一直在变化——俄罗斯几年前两次改变了它的规则。埃及改变了规则,只发出了几周的警告。
猜你喜欢
  • 2012-12-08
  • 2011-03-13
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
  • 2014-01-24
  • 2019-06-21
相关资源
最近更新 更多