gpt4 book ai didi

python - 天真的日期时间有什么意义

转载 作者:太空狗 更新时间:2023-10-30 02:30:56 25 4
gpt4 key购买 nike

来自 C#,我学会了在处理日期/时间时始终注意时区。 Python 具有适当的时区处理和有用的帮助程序,如 datetime.utcnow,这使得使用日期/时间变得直接。但是,在阅读 python 文档时,我注意到有一种叫做“天真的”日期时间实例的东西。据我所知,这只是一个没有任何时区的日期时间。

原始日期时间的用例是什么?没有时区的日期时间不是很无用吗?为什么 datetime.now() 不返回当前语言环境(如 .NET)中的日期时间?

我确信我遗漏了一些重要的东西,所以我希望有人能对此有所启发。

最佳答案

What is the point of a naive datetime

简单的日期时间非常有用!

在某些情况下,您不知道不想指定时区

假设您正在解析一个古老的外部程序日志文件,并且您不知道日期时间所在的时区 - 最好的办法是让它们保持原样。将时区附加到此类日期时间是错误的,并可能导致错误,因为您会假装拥有实际上没有的信息。


And why doesn't datetime.now() return a datetime in the current locale (like .NET)?

datetime.now() 确实返回当前语言环境时区的,但它没有与之关联的时区(tzinfo 属性),这可能就是您的意思。请注意 utcnow() 也是如此,两者都返回原始日期时间

datetime 模块中不包含时区支持的理由在 the docs 中有所提及。 :

Note that no concrete tzinfo classes are supplied by the datetime module. [...] The rules for time adjustment across the world are more political than rational, and there is no standard suitable for every application.

如果您在标准库中包含时区支持,您会在世界上的某些地方得到错误的结果。

时区是一个政治概念和变化 several times a year, globally .本地安装的 python 标准库的预期生命周期(通常)远大于时区数据的正确性。


What should I do to support timezones

免责声明:几乎在所有情况下您都应该使用 UTC。本地时区仅应用作向用户显示值时的最后一步。

要使用时区,您的程序应该依赖于 pytz包,它为您提供适当的时区支持。

from time import tzname
from pytz import timezone
from datetime import datetime
timezone(tzname[0]).localize(datetime.now())

请记住,您的程序或本地系统管理员需要使软件包保持最新状态。

关于python - 天真的日期时间有什么意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24281525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com