Reputation: 551
I'm using tzlocal.get_localzone() to get the local time zone. However, on AWS Lambda this returns "local" instead of the actual TZ such as "Americas/New_York" I'm then trying to use the return value with datetime.replace(tzinfo=new_time_zone) however, this fails when passed in as "local"
Does anyone have a trick on how to do this in AWS so my lambda ftn uses the TZ relative to the region its running in, or do I need to escalate this with AWS?
Upvotes: 7
Views: 2993
Reputation: 1867
You can use the following code to get the server's timezone name. Meaning, if the server is located in Denver, Colorado, TIME_ZONE
will be set to "America/Denver"
.
import tzlocal
TIME_ZONE = tzlocal.get_localzone().zone
Upvotes: 0
Reputation: 241728
You should not use tzlocal
in server-side code. It is meant for desktop applications only.
Most servers, especially in cloud-based services, set their system time zone to UTC.
You have no guarantee that the server's time zone is set to anything in particular (including UTC, or a regional time zone).
Your code should not behave differently when running from one cloud environment to the next, or on premises.
This is also described in the timezone best practices article.
Upvotes: 4