我遇到一个问题,我的时间计算在两种环境中产生不同的结果:
本地环境:MacBook Air,时区设置为厄瓜多尔(UTC-5)。 PythonAnywhere:基于英国的服务器 (UTC+0)。 我使用函数 datetime_Continental() 来确保时间是根据厄瓜多尔时区 (UTC-5) 计算的,无论服务器位置如何。这是函数:
import pytz
from datetime import datetime
def datetime_continental():
ecuador_tz = pytz.timezone('America/Guayaquil')
return datetime.now(ecuador_tz)
目标是将常数 KPI_AWAITING_TIME(设置为 1 分钟)与从 datetime_Continental.now() 减去 Turno.hora 的结果进行比较。该逻辑在 Jinja2 模板中实现如下:
{% if datetime_continental.now() - turno.hora > KPI_AWAITING_TIME %}
{{ "GO TO RECEPTION" }}
{% else %}
{{ datetime_continental.now() - turno.hora }}
{% endif %}
这个比较在我的本地机器上完美运行。这是我本地系统上的结果屏幕截图,它正确显示 0:00:29.170766,而没有增加 5 小时的时间:
但是,当在 PythonAnywhere 上运行相同的代码时,结果意外地增加了 5 个小时的时间。例如,PythonAnywhere 上的输出显示 5:00:33.440425,与预期值相差 5 小时:
问题:
函数 datetime_Continental() 是否正确处理时区转换,确保厄瓜多尔时区 (UTC-5) 在不同环境中一致应用?
为什么 PythonAnywhere 在结果中显示了额外的 5 个小时,即使相同的逻辑在本地工作正常?
此问题是否与 PythonAnywhere 的服务器配置(默认情况下可能使用 UTC+0)有关,如何解决此问题以确保两个平台上都使用厄瓜多尔时间?
可能的问题是
turno.hora
缺少时区信息,这可能会导致 PythonAnywhere
假设它是 UTC+0
,并且当您比较这两个值时会额外添加 5 个小时。
了解两个日期时间时区。应该可以解决问题。