I need to be able to compute differences between two data/time values which represent instants in (potentially) two different geographic locations.
Each input value I have is a tuple of the following:
- A date/time value with no timezone offset, for instance,
6:54 AM, 12/3/2005
. - A latitude/longitude value (e.g.,
-33.8704, 151.1938
) describing the location of the specific time.
From any combination of two input values, I need to compute the time difference (which may be minutes, days, years, etc.). To start with, I need to:
- Normalise each of the input values into their relevant GMT (or Zulu) time. I imagine this can be done by converting lat/long values into a timezone. Once a related timezone is obtained, I then need to account for daylight savings differences according to the specified date to determine an accurate time.
- Once the time values have been normalized, computing the difference is trivial.
Can anyone please suggest how I can:
- Convert a lat/long pair into a timezone, and
- Determine the daylight savings offset for a given timezone and a date.
I imagine I need some function for (1) and a database of values for (2), but I do not know where I can get these, or if they are freely available.
Other constraints:
- I would like software in Java or .Net (as my software application can use plugins written in either), and
- I really would like all processing to be local. I am aware that there exist several web services out there to compute the timezone for a lat/long pair (as discussed on this Stackoverflow question such as Geonames.org or DRTEngine), but given the amount of data I have, I do not want to rely on or hit third party web services for every data point I have, so I'd prefer 'free' software and access to all the right info locally.
UPDATE: Thanks to all those who provided answers so far. I am currently trying to tackle this problem by using the GeoNames data and performing a nearest-neighbor calculation to determine a timezone from a lat/long, and will focus on using Joda Time and the associated latest tz database for computing daylight savings offsets for particular dates.