我认为‘UTC’和‘UTC_STR_BACK’应该是同一时间,但结果不同.以下是代码:

#input
utc='2023-09-20T05:04:54'

#calculation
utc_time = datetime.strptime(utc, '%Y-%m-%dT%H:%M:%S')
utc_dn = utc_time.timestamp()
utc_back = datetime.fromtimestamp(utc_dn, tz=pytz.utc)
utc_str_back = utc_back.strftime('%Y-%m-%d %H:%M:%S %Z')

#output
utc_str_back ='2023-09-19 21:04:54 UTC'

推荐答案

在Python中,朴素的DateTime指的是local time,而不是UTC.所以呢,

utc_time = datetime.strptime(utc, '%Y-%m-%dT%H:%M:%S')

具有误导性;utc_time将被解释为当地时间.在你打电话的那一刻就出了问题

utc_dn = utc_time.timestamp()

timestamp方法将日期时间转换为UTC,然后计算Unix时间(指UTC).


100

docs:

朴素对象不包含足够的信息,无法相对于其他日期/时间对象明确定位自己.

您的应用程序正是需要这一点.因此,请使用Aware DateTime以避免歧义.例如:

from datetime import datetime, timezone

#input
utc='2023-09-20T05:04:54'

#calculation
utc_time = datetime.strptime(utc, '%Y-%m-%dT%H:%M:%S').replace(tzinfo=timezone.utc)
utc_dn = utc_time.timestamp()
utc_back = datetime.fromtimestamp(utc_dn, tz=timezone.utc)
utc_str_back = utc_back.strftime('%Y-%m-%d %H:%M:%S %Z')

#output
print(utc_str_back)
# 2023-09-20 05:04:54 UTC

附注:pytz is deprecated.

Python相关问答推荐

如何在Pandas 中存储二进制数?

如何将新的SQL服务器功能映射到SQL Alchemy的ORM

收件箱转换错误- polars.exceptions. ComputeHelp- pandera(0.19.0b3)带有polars

如何在超时的情况下同步运行Matplolib服务器端?该过程随机挂起

Python无法在已导入的目录中看到新模块

如何使用上下文管理器创建类的实例?

如何根据情况丢弃大Pandas 的前n行,使大Pandas 的其余部分完好无损

acme错误-Veritas错误:模块收件箱没有属性linear_util'

TARete错误:类型对象任务没有属性模型'

Django mysql图标不适用于小 case

聚合具有重复元素的Python字典列表,并添加具有重复元素数量的新键

修复mypy错误-赋值中的类型不兼容(表达式具有类型xxx,变量具有类型yyy)

海上重叠直方图

Python导入某些库时非法指令(核心转储)(beautifulsoup4."" yfinance)

Polars asof在下一个可用日期加入

未调用自定义JSON编码器

Python Pandas—时间序列—时间戳缺失时间精确在00:00

基于另一列的GROUP-BY聚合将列添加到Polars LazyFrame

Gunicorn无法启动Flask应用,因为无法将应用解析为属性名或函数调用.'"'' "

在用于Python的Bokeh包中设置按钮的样式