繁体   English   中英

当地时间到 UTC

[英]Local time to UTC

'v' 是从数据库读取的 python 日期时间 object - '2020-09-24 00:00:00'

我想存储在祖鲁语的 LDAP 中——所以“2020-09-24 07:00:00”——因为我位于洛杉矶。

v = v.strftime('%Y%m%d%H%M%SZ') - 直接转换为 20200924000000Z(不是 20200924070000Z)。

这是正确的行为吗? 如果没有,在注入 LDAP 之前,我如何最好地隐蔽时间读取 UTC?

'v' 是从数据库读取的 python datetime 对象 - '2020-09-24 00:00:00'

我想存储在祖鲁语的 LDAP 上面 - 所以'2020-09-24 07:00:00' - 因为我位于洛杉矶。

v = v.strftime('%Y%m%d%H%M%SZ') - 直接转换为 20200924000000Z(不是 20200924070000Z)。

这是正确的行为吗? 如果没有,在注入 LDAP 之前,如何最好地将时间读取到 UT​​C?

  • 将字符串解析为日期时间 object(这将是幼稚的;不知道时区)——您的格式允许使用fromisoformat ,这比strptime有效
  • 设置适当的时区(这里:洛杉矶的美国/太平洋)
  • 将时区更改为 UTC
  • output 作为所需格式的字符串

由于 pytz 将随着 Python 3.9 的发布而被弃用,我建议使用dateutil 使用Python 3.9,您将拥有用于此类操作的区域信息。

from datetime import datetime
from dateutil.tz import gettz

s = '2020-09-24 00:00:00'
dt = datetime.fromisoformat(s)

# set time zone
dt = dt.replace(tzinfo=gettz('US/Pacific'))

# to UTC
dt = dt.astimezone(gettz('UTC'))

# to string
out = dt.strftime('%Y%m%d%H%M%SZ')
# '20200924070000Z'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM