Yesterday I signed in to the billtracker, and got an error page when
trying to display my bill list:
[ ... ]
File "/var/www/nmbilltracker/billtracker/app/models.py", line 766, in location_html
if self.last_action_date > self.scheduled_date.replace(tzinfo=None):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: can't compare offset-naive and offset-aware datetimes
Python's datetime class drives me crazy.
Any given datetime object might or might not have a timezone.
Those that do are called "timezone aware" or just "aware" datetimes;
those without a timezone are called "unaware" or "naive".
Any given function might or might not return a timezone-aware datetime.
If you ever mess up and call a function that returns a timezone when you
didn't expect one, or vice versa, or if a function you call changes in
that respect, now you have a hidden time bomb that will crash your
program the next time you do any sort of comparison with or
subtraction from another datetime, and by then, you may have no idea
way of finding out where the problematic time came from so you can
guard against it happening again.
Read more ...
Tags: python, programming, timezones
[
18:53 Feb 21, 2026
More programming |
permalink to this entry |
]
My last entry mentioned some work I'd done to one of my mapping programs,
Ellie, to gather statistics from the track logs I get from my Garmin GPS.
In the course of working on Ellie, I discovered something
phenomenally silly about the GPX files from my Garmin Vista CX,
as uploaded with gpsbabel.
Track log points, quite reasonably, have time stamps in "Zulu time"
(essentially the same as GMT, give or take some fraction of a second).
They look like this:
<trkpt lat="35.289519913" lon="-115.227057561">
<ele>1441.634277</ele>
<time>2010-10-14T17:51:35Z</time>
</trkpt>
But the waypoints you set for specific points of interest, even if
they're in the same GPX file, have timestamps that have no time zone at all.
They look like this:
<wpt lat="35.334813371" lon="-115.178730609">
<ele>1489.917480</ele>
<name>001</name>
<cmt>14-OCT-10 11:18:51AM</cmt>
<desc>14-OCT-10 11:18:51AM</desc>
<sym>Flag, Blue</sym>
</wpt>
Notice the waypoint's time isn't actually in a time field -- it's
duplicated in two fields, cmt (comment) and desc (description).
So it's not really intended to be a time stamp -- but it sure would be
handy if you could use it as one.
You might be able to correlate waypoints with track points by
comparing coordinates ... unless you spent more than an hour hanging
around a particular location, or came back several hours later (perhaps
starting and ending your hike at the same place). In that case ...
you'd better know what the local time zone was, including daylight
savings time.
What a silly omission, considering that the GPS obviously already knows
the Zulu time and could just as easily use that!
Tags: mapping, GIS, programming, timezones
[
22:09 Nov 03, 2010
More mapping |
permalink to this entry |
]