[OSM-dev] OSM Date Formats
brett at bretth.com
Sat Sep 29 02:25:14 BST 2007
There are a number of ways dates are being represented in osm files
causing complexity and performance impact when parsing them.
JOSM writes dates in this format: "2007-07-22 13:42:29"
Osmosis writes dates in this format: "2007-07-10T11:32:32.000Z"
planet.rb writes dates in this format: "2007-02-12T18:43:01+00:00"
Note that osmosis and planet.rb are both using the correct xml date
format, but osmosis is always writing in UTC format represented by the
Z. The osmosis format is shorter but is including the millisecond
information which isn't necessary. From what I can tell, JOSM has just
done its own thing.
Parsing these files is tricky. Osmosis actually uses three separate
parsers, a custom parser reading the UTC format for speed, a standard
xml date parser as a fallback, and a customised JOSM parser as a second
fallback for all remaining cases. If you have a look at the JOSM code,
it has all kinds of trickery to parse a date format much of which
appears unnecessary if it stuck to the standard java support for xml
data types (javax.xml.datatype.XmlGregorianCalendar is available from
I'd like to standardise on a common format. The custom osmosis parser
provides almost 10x speed improvement over the generic java xml date
parser but only works for a single format (currently the osmosis one), I
don't want to write custom parsers for every format combination out
there. I thought that osmosis was going to become the new planet dumper
which made the problem go away for me but it appears that's no longer
the case with planet.c stepping in.
I'd like to standardise on a UTC date with Z suffix similar to the
osmosis example. I am willing to remove the millisecond information to
make it even shorter if necessary (I'll have to write my own formatter
but not a big job). As a nice side effect this would noticeably reduce
the size of the planet.
More information about the dev