当前位置: 首页 > 面试题库 >

如何在Python中获取“时区感知”值datetime.today()?

赏星河
2023-03-14
问题内容

我正在尝试从的值中减去一个日期值,datetime.today()以计算某物是多久以前的。但它抱怨:

TypeError: can't subtract offset-naive and offset-aware datetimes

该值datetime.today()似乎不是“时区感知”的,而我的其他日期值是。我如何获得datetime.today()时区感知的值?

现在,这给了我当地时间,正好是PST,即UTC-8个小时。最坏的情况是,有没有一种方法可以手动将时区值输入datetime返回的对象datetime.today()并将其设置为UTC-8?

当然,理想的解决方案是自动知道时区。


问题答案:

在标准库中,没有跨平台的方法来创建感知时区而不创建自己的时区类。

在Windows上有win32timezone.utcnow(),但这是pywin32的一部分。我宁愿建议使用pytz库,该库具有大多数时区的不断更新的数据库。

使用本地时区可能非常棘手(请参见下面的“更多阅读”链接),因此您可能希望在整个应用程序中使用UTC,尤其是对于算术运算(如计算两个时间点之间的时差)。

您可以像这样获取当前日期/时间:

import pytz
from datetime import datetime
datetime.utcnow().replace(tzinfo=pytz.utc)

记住这一点datetime.today()datetime.now()返回 本地
时间,而不是UTC时间,因此.replace(tzinfo=pytz.utc)向他们申请将是不正确的。

另一个不错的方法是:

datetime.now(pytz.utc)

有点短,并且做的一样。



 类似资料:
  • 问题内容: 如何将时区感知日期时间对象转换为本地时区的等效非时区感知日期时间? 我的特定应用程序使用Django(尽管这实际上是一个通用的Python问题): .... 这导致Django抛出错误: 我需要的是: 什么会SOME_FUNCTION是什么? 问题答案: 通常,要将任意时区感知日期时间转换为原始(本地)日期时间,我将使用模块并将其转换为本地时间,并使日期时间变为原始状态: 但是由于你的

  • 我在Python(3.6.3)代码中得到了这个HTML元素(当然作为Selenium webelement): 很明显,我不能使用,因为我不知道属性的名称...

  • 问题内容: 获取当前时间的模块/方法是什么? 问题答案: 采用: 而只是时间: 有关更多信息,请参见文档。 要保存输入,可以datetime从datetime模块中导入对象: 然后datetime.从以上所有位置移除引线。

  • 问题内容: 我需要做什么 我有一个不了解时区的datetime对象,我需要向其添加一个时区,以便能够将其与其他时区感知的datetime对象进行比较。对于这一旧情况,我不想将我的整个应用程序转换为时区。 我尝试过的 首先,演示问题: 首先,我尝试了astimezone: 这次失败并不令人惊讶,因为它实际上是在尝试进行转换。替换似乎是一个更好的选择(根据Python:如何获取“时区感知”的datet

  • 在源服务(“cluster_a”)和目标服务(“cluster_b”)之间启用区域感知路由需要执行几个步骤。 在源服务上的Envoy配置 本节介绍与源服务并行运行的Envoy配置。这些要求是: Envoy必须使用--service-zone选项启动,该选项定义了当前主机的区域。 源和目标集群的定义都必须具有sds类型。 local_cluster_name必须设置为源群集。 以下配置中仅列出了集群