如何将日期时间/时间戳从一个时区转换为另一个时区?

2023-11-29

具体来说,给定我的服务器的时区(系统时间角度)和时区输入,我如何计算系统时间,就好像它处于新时区一样(无论夏令时等)?

import datetime
current_time = datetime.datetime.now() #system time

server_timezone = "US/Eastern"
new_timezone = "US/Pacific"

current_time_in_new_timezone = ???

如果您知道您的原始时区和要将其转换到的新时区,则结果非常简单:

  1. 做两个pytz.timezone对象,一个用于当前时区,一个用于新时区,例如pytz.timezone("US/Pacific")。您可以找到所有官方时区的列表pytz图书馆:import pytz; pytz.all_timezones

  2. 将感兴趣的日期时间/时间戳本地化为当前时区,例如

current_timezone = pytz.timezone("US/Eastern")
localized_timestamp = current_timezone.localize(timestamp)
  1. 使用转换为新时区.astimezone()在步骤 2 中新本地化的日期时间/时间戳上,使用所需时区的 pytz 对象作为输入,例如localized_timestamp.astimezone(new_timezone).

Done!

作为一个完整的例子:

import datetime
import pytz

# a timestamp I'd like to convert
my_timestamp = datetime.datetime.now()

# create both timezone objects
old_timezone = pytz.timezone("US/Eastern")
new_timezone = pytz.timezone("US/Pacific")

# two-step process
localized_timestamp = old_timezone.localize(my_timestamp)
new_timezone_timestamp = localized_timestamp.astimezone(new_timezone)

# or alternatively, as an one-liner
new_timezone_timestamp = old_timezone.localize(my_timestamp).astimezone(new_timezone) 

奖励:但如果您需要的只是特定时区的当前时间,您可以方便地将该时区直接传递到 datetime.now() 以直接获取当前时间:

datetime.datetime.now(new_timezone)

当涉及到通常需要时区转换时,我强烈建议您应该以 UTC 格式存储数据库中的所有时间戳,因为它没有夏令时 (DST) 转换。作为一种良好的做法,人们应该始终选择启用时区支持(即使您的用户都位于同一个时区!)。这将帮助您避免当今困扰众多软件的 DST 转换问题。

除了夏令时之外,软件中的时间通常非常棘手。为了了解在一般软件中处理时间有多么困难,这里有一个可能具有启发性的资源:http://yourcalendricalfallacyis.com

即使将日期时间/时间戳转换为日期这样看似简单的操作也可能变得不那么明显。作为这个有用的文档指出:

一个日期时间代表一个时间点。这是绝对的:它不依赖于任何东西。相反,日期是一个日历概念。这是一段时间,其范围取决于考虑日期的时区。正如您所看到的,这两个概念根本不同。

了解这种差异是避免基于时间的错误的关键一步。祝你好运。

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

如何将日期时间/时间戳从一个时区转换为另一个时区? 的相关文章

随机推荐

  • Android Studio 中的 color.xml 文件出现奇怪的错误

    我一直在寻找解决方案 但实际上没有人可以确认 创建新的 android studio 项目时 colors xml 9 18 错误 XML 文档结构必须开始和结束 在同一实体内 我打开那个colors xml 它包含一些奇怪的东西
  • 微数据可以应用于任何类型的 HTML 元素吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 在网络上的所有示例中 我看到了微数据属性itemscope and itemtype被应用到div元素 像这样 div h1 Avatar h1 span Director span
  • 是否可以仅从 MS SQL 数据库备份恢复架构和存储过程?

    我有一个完整的 MS SQL 备份文件 我想从中提取存储过程和架构 有办法恢复吗only模式定义和存储过程而不恢复数据 表行 我不这么认为 但您可以将其恢复到临时数据库 然后从那里编写所有脚本
  • 如何避免 ANR 对话框“应用程序未响应”

    我正在开发一个 Android 应用程序 它使用在线服务 我需要加载我的片段 基本上 我有一个菜单 每个按钮都替换下面的一个片段 当我单击一个按钮时 片段开始被替换 如果我同时按下键盘上的另一个按钮 我会得到应用程序没有响应对话框 然后单击
  • 编写一个程序来查找两个数字相除的余数,而不使用 % 运算符?爪哇语

    如何在不使用模运算符的情况下找到两个数字相除的余数 我的老师给了我这个精确的练习 这只是我在编程基础课程中的第五堂课 我已经尝试过这个方程 a b a a b b 但它总是返回零 我刚刚尝试过这个 public static void ma
  • 从 Safari (IOS) 访问文件系统

    对于基于 Windows Linux 的浏览器 我可以使用 Java 插件来访问文件系统 由于IOS不支持Java 有没有其他方法可以完成它 不 你不能 在 iOS safari 中无法上传甚至下载文件 在 iCab 中您可以通过以下方式上
  • 从Python中的列表中获取公共值

    我有以下清单 a list1 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 list2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
  • 制作一个 GtkButton 圆

    如何让 GtkBtton 变成圆形 接受的答案说 基本设置中没有圆度选项 嗯 现在有了 看the GTKWidget文档 在特殊情况下 可以通过添加 circular 样式类将按钮变成圆形 因此 例如 gtk style context a
  • 使用列名称取消透视

    我有一张桌子StudentMarks有柱子Name Maths Science English 数据就像 Name Maths Science English Tilak 90 40 60 Raj 30 20 10 我想将其安排如下 Nam
  • 如何使用node.js查看phantomjs子进程的标准输出?

    在下面的node js代码中 我通常必须等待phantomjs子进程终止才能获取标准输出 我想知道 phantomjs 子进程运行时是否有任何方法可以查看标准输出 var path require path var childProcess
  • Android Logcat 中的 GC_FOR_MALLOC、GC_EXPLICIT 和其他 GC_* 是什么意思?

    如果您查看 Android 日志 您可能会看到很多这样的内容 它们是什么意思 了解这些可以帮助我们更好地分配内存 Example 28470 dalvikvm D GC FOR MALLOC freed 665 objects 239992
  • 对于小于 100 的数字,大于返回错误值

    这是我的第一个 JavaScript 项目 所以我确信这段代码并不漂亮 可以用更好的方式编写 但除此之外 我遇到了一个我不明白的问题 我确信这只是我自己造成的一个错误 但我就是找不到它 gt 大于 运算符对超过 100 的数字工作正常 但在
  • ReportLabs Django 集成

    我正在跟进这个链接将 ReportLabs 集成到 Django 中 我做的一切都是正确的 但我收到一条错误消息 Exception Type RenderPMError Exception Value Can t setFont Time
  • 使用 Vaadin 8.0.7 将列添加到网格

    当我单击按钮 backBtn 时 我想将列添加到网格中 然后我从文本字段 filterText 获取值 这将是新列的名称 谁能帮我 该代码来自教程 但我需要在此处添加新功能 谢谢 您可以在附件中找到我的代码 网格位于 MyUI 类中 这是客
  • 在 BigQuery 上重新创建 GA 渠道

    我正在尝试使用 BigQuery 重新创建 GA 漏斗 Google360 上的自定义报告 GA 上的漏斗使用每个页面上发生的事件的唯一计数 我在网上发现这个查询大部分有效 SELECT COUNT s0 firstHit AS Landi
  • 如何翻译应用程序模板[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想在我的应用程序中使用多种语言 为此我遵循了此操作doc 在 locale 文件夹中创
  • 如何在Android上提供像按钮一样的imageview点击效果?

    我的 Android 应用程序中有 imageview 我将其用作带有给定 onClick 事件的按钮 但正如您可能猜到的那样 单击时它不会为 imageview 提供可点击的效果 我怎样才能做到这一点 您可以使用如下所示的方法对单个图像执
  • Solr 配置,加密数据配置文件

    如何在这里加密数据配置部分
  • HTML 电子邮件设计有哪些指南? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 您可以为电子邮件中的丰富 HTML 格式提供哪些指导方针 同时在许多客户端和基于 Web 的电子邮件界面中保持良好的视觉稳定性 Stack Overflow 上一个问题的不相关答
  • 如何将日期时间/时间戳从一个时区转换为另一个时区?

    具体来说 给定我的服务器的时区 系统时间角度 和时区输入 我如何计算系统时间 就好像它处于新时区一样 无论夏令时等 import datetime current time datetime datetime now system time