- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
来自 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/
我使用 Visual Studio Professional 2012。我成功地预编译了一个类(头文件和源代码)。几天后,当编译另一个使用前一个类的类(目前仅用于头文件)时,编译器发现缺少引用 if(
我正在尝试搜索数据库,然后使用源自原始搜索的名称标记输出,"derived_name"在下面的可重现示例中。我正在使用 dplyr管道 %>% ,并且我在准报价和/或非标准评估方面遇到了麻烦。具体来说
我是一名优秀的程序员,十分优秀!