将日期时间打印为 pytz.timezone("Etc/GMT-5") 会产生不正确的结果

2023-12-02

考虑以下示例,其中我采用一个简单的日期时间,使其能够识别 UTC 时区,然后转换为 UTC-5:

d1 = datetime.datetime(2019,3,7, 7,45)

d2 = pytz.utc.localize(d1)
print(f'UTC  : {d2}')

d3 = d2.astimezone(pytz.timezone('Etc/GMT-5'))
print(f'UTC-5: {d3}')

其输出是:

UTC  : 2019-03-07 07:45:00+00:00
UTC-5: 2019-03-07 12:45:00+05:00

我本以为UTC-5时间到了02:45,但是 5 小时的偏移量正在added转换为 UTC,而不是减去。

问题:

  • 为什么是'Etc/GMT-5'偏移应用于 UTC +5 小时而不是 -5 小时?
  • 我怎样才能从UTC to UTC-5?

您正在使用pytz,不仅仅是Python的datetime. 像dateutil一样, pytz 使用 Olson tz 数据库.

Olson tz 数据库定义Etc/GMT+N时区符合POSIX风格:

这些区域名称以 “Etc/GMT”的符号与标准 ISO 8601 约定相反。在 “Etc”区域,GMT 以西的区域有一个正号,而以东的区域有一个正号 他们的名字中带有负号(例如“Etc/GMT-14”比 GMT 早 14 小时。)


因此,要将 UTC 转换为偏移量为 -5 的时区,您可以使用Etc/GMT+5:

import datetime as DT
import pytz

naive = DT.datetime(2019, 3, 7, 7, 45)
utc = pytz.utc
gmt5 = pytz.timezone('Etc/GMT+5')
print(utc.localize(naive).astimezone(gmt5))

# 2019-03-07 02:45:00-05:00
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将日期时间打印为 pytz.timezone("Etc/GMT-5") 会产生不正确的结果 的相关文章

随机推荐

  • 使用 Sceneform Android 在 3D 模型上绘制可渲染形状

    我在用场景窗体 Android SDK在Android APP中渲染3D模型 为了显示 3D 模型 我使用下面的代码 它也支持 3D 模型中的旋转和缩放功能 private fun renderLocalObject position In
  • Mac OS X Cocoa,在全局屏幕坐标空间中翻转 Y 坐标

    如何将 NSPoint 的 y 值翻转到翻转的坐标空间 我有两个点源 都在全局屏幕空间中 但其中一个是翻转的 一个来自屏幕坐标空间 0 0 左上角 一个来自屏幕坐标空间 0 0 左下角 我需要翻转第二个 左下角 使其与第一个 左上角 处于同
  • 无法确定关联的主要目的

    首先使用 EF5 代码 我有两个类 Table UserProfile public class UserProfile Key DatabaseGenerated DatabaseGeneratedOption Identity publ
  • JOIN 查询的 Php pdo 结果

    我的问题是 我尝试在两个表之间进行简单的 JOIN 这两个表都有 id 字段 我的结果是一个 stdClass 对象 因为我使用 PDO 有谁知道如何区分第一个表的 id 和第二个表的 id Code sql SELECT FROM pro
  • Swift 中的 CLGeocoder - 使用verseGeocodeLocation 时无法返回字符串

    我正在尝试使用 CLGeocoder 返回字符串中坐标的位置 我的代码目前如下所示 func getPlaceName latitude Double longitude Double gt String let coordinates C
  • Firebase 身份验证电子邮件自定义

    我在我的应用程序中使用 firebase auth 并且正在设置无密码电子邮件注册 我已设法从自己的域设置电子邮件 但如何更改电子邮件中发送的魔术链接文本 我可以看到其他模板电子邮件的配置 但看不到这封电子邮件的配置 有问题的电子邮件是这样
  • 获取所有行都为 true 的 id (sqlalchemy)

    我试图找到一种简单的方法来查找特定的表单或表单 其中所有项目都带有form id是活跃的 这是我的Messages table class Messages db Model tablename Messages id db Column
  • 在 Swift 中,如何避免可选值和 nil 对象引用?

    选项的全部原因是为了防止由于命中分配给 nil null none 的变量而导致运行时崩溃 因此 变量不能为nil 相反 它们可以包装在将它们表示为 Some 或 None 的可选类型中 并展开以获取 Some 或 nil 的特定内容 但如
  • VBA隐藏用户表单但保留输入的数据

    我带着我希望是一个相当简单的问题再次回来 我正在尝试在 VBA 中创建用户表单 用户将在表单中输入某些信息 然后关闭表单 我希望用户表单在用户关闭后保留输入的数据 我将它视为一个类模块 因为从技术上讲它们是 或者至少我是这么理解的 这是我正
  • AWS EC2 Angular 5 ng服务不通过浏览器连接

    我设法让我的 Angular 5 应用程序在 AWS EC2 Ubuntu 上运行 启动标准Ubuntu实例 使用PuTTy加壳 安装节点 进入接下来的4条 魔线 mkdir npm global npm config set prefix
  • 具有可变结尾整数的 For 循环

    我有一个包含 40 000 行数据的数据集 我的代码设置为检查第 n 1 行中的日期是否比第 n 行中的日期晚 1 天 如果第 n 行和第 n 1 行中的日期不按正常时间顺序排列 则会添加包含该日期的空白数据的行 我的问题是 因为我在添加行
  • Selenium / java:如何获取总页长度

    使用 Selenium Java 绑定 我正在尝试编写一个简短的模块 它将截取浏览器页面的完整屏幕截图 我知道AShot存在 但没有维护 并且对我来说有一些问题 作为其中的一部分 我想知道我正在处理的整页长度是多少 这样我就可以计算出需要拍
  • 如何在 r markdown 中指定自定义纸张尺寸

    我正在使用 R Markdown 制作一本具有特定高度和长度测量值的小册子 有没有办法指定 R Markdown 以 5 5 x8 5 尺寸生成文章 我看到有关制作 A4 尺寸 pdf 的问题here但这并没有帮助 因为我的措施非常具体 使
  • Java JScrollPane - 多个组件

    我正在尝试在 JScrollPane 中添加 2 个图像 第一个图像是背景 第二个图像与第一个图像重叠 当我运行程序时 问题仅显示第二张图像 请帮忙 ImageIcon ii new ImageIcon mini map png JLabe
  • “一个实体对象不能被 IEntityChangeTracker 的多个实例引用。”

    我使用 MYSql 服务器作为 Windows 窗体应用程序背后的数据库 我的数据库中有两个模式 我必须将条目放入其中 我创建了两个上下文对象 每个对象对应一个模式 当我使用 schema1 上的 contextA 时 所有条目都完美完成
  • 如何将双引号或单引号或不带引号与正则表达式匹配?

    我试图从所有三种类型的输入中获取一些文本 但无法弄清楚如何处理未引用的情况 到目前为止我有 name Input name sometext name sometext name sometext 看起来您是一名 C 开发人员 因此您可以使
  • 安装 Pillow(和 PIL)时出错

    如果我使用命令sudo pip install Pillow 它运行良好 直到清理阶段 这是日志文件中的完整错误消息 clang error unknown argument mno fused madd Wunused command l
  • Apple APP Store 上启用 Bitcode 的移动应用程序大小

    我是新人 尝试在 App Store 上发布我的第一个应用程序 我已经制作了这个应用程序统一 5 6 我面临的问题是生成的存档的大小Xcode 8 3 我必须在 App Store 上上传 它超过 100 MB 而 Play 商店上的同一个
  • 在 Android 中复制 Apple 的搜索

    我想创建一个类似于此处所示的 UIhttp appsreviews com wp content uploads 2010 08 Cures A Z App for iPhone jpg 我开始尝试将两个自定义列表并排放置 就像在这段代码中
  • 将日期时间打印为 pytz.timezone("Etc/GMT-5") 会产生不正确的结果

    考虑以下示例 其中我采用一个简单的日期时间 使其能够识别 UTC 时区 然后转换为 UTC 5 d1 datetime datetime 2019 3 7 7 45 d2 pytz utc localize d1 print f UTC d