本地环境和PythonAnywhere环境之间的时间差异(日期时间计算有5小时差异)

问题描述 投票:0回答:1

我遇到一个问题,我的时间计算在两种环境中产生不同的结果:

本地环境: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 小时的时间:

correctly shows 0:00:29.170766 without adding 5 hours to the time

但是,当在 PythonAnywhere 上运行相同的代码时,结果意外地增加了 5 个小时的时间。例如,PythonAnywhere 上的输出显示 5:00:33.440425,与预期值相差 5 小时:

the output on PythonAnywhere shows 5:00:33.440425, which is a 5-hour difference from the expected value

问题:

  1. 函数 datetime_Continental() 是否正确处理时区转换,确保厄瓜多尔时区 (UTC-5) 在不同环境中一致应用?

  2. 为什么 PythonAnywhere 在结果中显示了额外的 5 个小时,即使相同的逻辑在本地工作正常?

  3. 此问题是否与 PythonAnywhere 的服务器配置(默认情况下可能使用 UTC+0)有关,如何解决此问题以确保两个平台上都使用厄瓜多尔时间?

python-3.x flask jinja2 flask-sqlalchemy pythonanywhere
1个回答
0
投票

可能的问题是

turno.hora
缺少时区信息,这可能会导致
PythonAnywhere
假设它是
UTC+0
,并且当您比较这两个值时会额外添加 5 个小时。

了解两个日期时间时区。应该可以解决问题。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.