Quadgnim
Quadgnim

Reputation: 551

python getting local time zone?

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

Answers (2)

MikeyE
MikeyE

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

Matt Johnson-Pint
Matt Johnson-Pint

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

Related Questions