python - datetime.now(tzinfo) 和 datetime.now().replace(tzinfo=tzinfo) 有什么区别?
问题描述
我注意到当我将用户输入的日期时间转换为本地化时区时,最终存储在数据库中的日期时间有六分钟的偏差,所以我发现datetime.now(tzinfo)
和datetime.now().replace(tzinfo=tzinfo)
>>> datetime.now(pytz.timezone('Asia/Shanghai'))
datetime.datetime(2019, 11, 12, 22, 51, 49, 495273,
tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)
>>> datetime.now().replace(tzinfo=pytz.timezone('Asia/Shanghai'))
datetime.datetime(2019, 11, 12, 22, 51, 51, 349327,
tzinfo=<DstTzInfo 'Asia/Shanghai' LMT+8:06:00 STD>)
“CST+8:00:00”和“LMT+8:06:00”有什么区别,为什么?
实际上后者(带替换)是错误的,因为当我将它们转换回UTC时间时,后者(带替换)与原始时间不同:
>>> datetime.utcnow()
datetime.datetime(2019, 11, 12, 14, 51, 51, 668120)
>>> datetime.now(pytz.timezone('Asia/Shanghai')).astimezone(pytz.utc)
datetime.datetime(2019, 11, 12, 14, 51, 52, 79119, tzinfo=<UTC>)
>>> datetime.now().replace(tzinfo=pytz.timezone('Asia/Shanghai')).astimezone(pytz.utc)
datetime.datetime(2019, 11, 12, 14, 45, 54, 908616, tzinfo=<UTC>)
解决方案
推荐阅读
- reactjs - 如何使循环内的“开/关”按钮做出反应 17
- css - Sass 嵌套属性
- javascript - 选择特定选项卡时获取数据 - React.js
- javascript - 将css复选框更改为javascript
- javascript - 表单未检查该字段是否为空或是否满足要求
- android - 尝试在android java中获取aws比较脸时出现未知错误
- c++ - C ++:如何编写一个循环,该循环采用两个用户提示的整数并打印总和(包括)?
- python - 如何将 .txt 文件写入列表
- r - 使用 as.Date 函数从日期时间中提取日期时的错误
- spring-boot - 使用 Spring Boot 依赖项的 Kotlin Multiplatform 全栈