A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/todbot/circuitpython-tricks/issues/14 below:

Bug in calculating timezone offset in time data received from worldtimeapi.org · Issue #14 · todbot/circuitpython-tricks · GitHub

In the section "Set RTC time from time service," the field raw_offset from the json received from the time service does not take daylight savings into consideration. However, utc_offset does. I was getting the wrong local time here in Southern California during daylight savings until I made the following modification:

print("Getting current time:")
response = requests.get("http://worldtimeapi.org/api/ip")
time_data = response.json()
tz_hour_offset = int(time_data['utc_offset'][0:3])
tz_min_offset = int(time_data['utc_offset'][4:6])
if (tz_hour_offset < 0):
    tz_min_offset *= -1
#unixtime = int(time_data['unixtime']) + int(time_data['raw_offset']) # << Incorrect offset during DST
unixtime = int(time_data['unixtime'] + (tz_hour_offset * 60 * 60)) + (tz_min_offset * 60)

print(time_data)
print("URL time: ", response.headers['date'])

rtc.RTC().datetime = time.localtime( unixtime ) # create time struct and set RTC with it

Here is the json data I received from worldtimeapi.org:

{
   'timezone': 'America/Los_Angeles',
   'utc_datetime': '2023-03-18T19:20:44.368793+00:00',
   'raw_offset': -28800,
   'client_ip': 'redacted',
   'dst_from': '2023-03-12T10:00:00+00:00',
   'unixtime': 1679167244,
   'utc_offset': '-07:00',
   'datetime': '2023-03-18T12:20:44.368793-07:00',
   'week_number': 11,
   'abbreviation': 'PDT',
   'day_of_year': 77,
   'day_of_week': 6,
   'dst': True,
   'dst_offset': 3600,
   'dst_until': '2023-11-05T09:00:00+00:00'
}

Here we can verify that raw_offset of -28800 = -8 hours, but utc_offset is -7 hours, which is correct during DST.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4