My first reaction was to wonder whether this actually affects results
much. But then, especially considering that we already use long integers
to store time:
The current time in seconds since the epoch is 1 368 921 705, requiring
10 significant decimal digits to maintain 1-second resolution.
2**63 is 9 223 372 036 854 775 808 (~19 decimal digits of precision), so
a signed long can hold time to roughly nanosecond resolution for the
next several hundred years.
2**31 is 2 147 483 648, so a signed int can hold time at 1-second
resolution for the next 24 years or so (not good).
Doubles give us 52 bits worth of significand, storing integers exactly
up to 9 007 199 254 740 992 (~16 significant decimal digits), and can
store time exactly at millisecond resolution for the next few hundred years.
So I don't see any real argument against storing it as milliseconds in
longs. Remember though that all data types are discrete and you will run
into roundoff error whatever the resolution. The discrepancies would be
less visible in itineraries (if they are even visible now), but could
still cause assertions based on analytic reasoning to fail if not
properly accounted for.
-Andrew