我使用tzlocal.get_localzone()来获取本地时区。但是,在AWS Lambda上,这将返回" local"而不是实际的TZ,例如" Americas / New_York"然后,我尝试将返回值与datetime.replace(tzinfo = new_time_zone)一起使用,但是当传入" local"
有没有人知道如何在AWS中执行此操作,因此我的lambda ftn使用TZ相对于其运行的区域,或者我是否需要使用AWS进行升级?
答案 0 :(得分:4)
您不应在服务器端代码中使用tzlocal
。它仅适用于桌面应用程序。
大多数服务器,尤其是基于云的服务,都将其系统时区设置为UTC。
您没有保证服务器的时区特别设置为任何内容(包括UTC或区域时区)。
从一个云环境运行到下一个环境或在内部运行时,您的代码的行为应该不同。
the timezone best practices article中也对此进行了描述。
答案 1 :(得分:0)
您可以使用以下代码获取服务器的时区名称。这意味着,如果服务器位于科罗拉多州的丹佛,则TIME_ZONE
将设置为"America/Denver"
。
import tzlocal
TIME_ZONE = tzlocal.get_localzone().zone