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?
You can also use the pytz module to create timezone-aware objects. For this, we will store the current date and time in a new variable using the datetime. now() function of datetime module and then we will add the timezone using timezone function of pytz module.
timezone. now() useful. This function returns the current date and time as a naive datetime when USE_TZ = False and as an aware datetime when USE_TZ = True . You can add or subtract datetime.
Getting the UTC timestampdatetime. now() to get the current date and time. Then use tzinfo class to convert our datetime to UTC. Lastly, use the timestamp() to convert the datetime object, in UTC, to get the UTC timestamp.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With