python - 为什么 pytz.localize 和 datetime.replace 返回不同的结果?
问题描述
正如pytz 的文档所说:
def localize(self, dt, is_dst=False):
'''Convert naive time to local time'''
if dt.tzinfo is not None:
raise ValueError('Not naive datetime (tzinfo is already set)')
return dt.replace(tzinfo=self)
因此,如最后一行所示,localize 和 dt.replace 是相同的。因为上面的算法,如果我们删除if
部分,就是return dt.replace(tzinfo=self)
使用datetime.replace
.
但是我们知道输出是不同的:
time = datetime.now()
tehran_tz = pytz.timezone('Asia/Tehran')
print(tehran_tz.localize(time))
print(time.replace(tzinfo=tehran_tz))
输出:
2021-02-22 21:15:29.781400+03: 30
2021-02-22 21:15:29.781400+03: 26
这里讨论的不是哪个是正确的。但是为什么它们不同,而它们的代码是相同的。
解决方案
推荐阅读
- asp.net - 如何确定客户端连接的服务器的IP?可能吗?
- python - 如何处理 psycopg2 上传中丢失的数据
- css - 使用内联、弹性、浮动或其他方式在窗口调整大小时堆叠 3 个元素
- git - 如何在不进行轮询的情况下使本地 git 镜像保持最新?
- ide - 删除 JetBrains 编辑器中代码左侧的缩进
- r - 如何根据 R 中变量的不同级别创建不同的数据集?
- c# - C# 更好地实现 JSON 文件
- javascript - “元素无法点击”New Relic
- c++ - c++ 用'enter'命中结束循环
- r - Classification Tree Diagram from H2O Mojo/Pojo