>Really, I do not know if a standard exists, valid in every country around the >world. > >For example, in Italy (where I am) the last change was last sunday in october, >and always at 3:00 AM, not 2:00 AM. > >Thanks for any help.
That is not a problem is you want to calculate this yourself. All you need to do is abstract the problem. Instead of using two specific rules, write code that handles two abstract rules, like: Specific rule: 2nd Sunday in March at 2:00 AM, add one hour. Abstract rule: Nth DayOfWeek in Month at TimeToChange add TimeOffset By abstracting the first rule, you can see that we really only need one abstract rule format to handle both the spring and fall time changes because TimeOffset can be a negative or positive number. Obviously, Windows is storing abstract information like this somewhere in order to accomplish the automatic time change. AFAIK, it is not documented and therefore cannot be relied upon. The registry is a good guess, but since you can't rely on it, you are better off handling the issue yourself. Glenn Lawler www.incodesystems.com -----Original Message----- From: mauro russo [SMTP:[email protected]] Sent: Tuesday, November 10, 2009 4:26 AM To: [email protected] Subject: Re: [delphi-en] conversions between UTC and local time Really, I do not know if a standard exists, valid in every country around the world. For example, in Italy (where I am) the last change was last sunday in october, and always at 3:00 AM, not 2:00 AM. Thanks for any help. ----- Original Message ----- From: Glenn B. Lawler To: '[email protected]' Sent: Monday, November 09, 2009 10:43 PM Subject: RE: [delphi-en] conversions between UTC and local time Mauro, >is there at least some API giving the "next time" there will be a change on local time >with respect UTC? Why not just calculate the dates yourself? The rules have changed over the years, AFAIK, the current rules are: 1. 2nd Sunday in March at 2:00 AM, add one hour. 2. 1st Sunday in November at 2:00 AM, subtract one hour. There are a number of ways to calculate the next date based on these rules. Check the Delphi help on EncodeDate, DecodeDate, and DayOfWeek. The TDateTime type is a double (floating point) number. The integral part is the number of days since a particular reference date (+/-) and the fractional part is the fraction of a day to represent the time. We don't need the time for this problem. Think about the simplest approach you could use to manually determine the date of the Nth day of the week in a given month. Write a function that returns the date of the next daylight change given a starting date. Let us know if you need help on the particulars of implementing this. While this problem may seem difficult at first, the way to deal with it (or any other non-trivial problem) is to break it down into simpler steps which can individually be solved easily. Glenn Lawler www.incodesystems.com -----Original Message----- From: mauro russo [SMTP:[email protected]] Sent: Monday, November 09, 2009 1:48 PM To: [email protected] Subject: Re: [delphi-en] conversions between UTC and local time Dear, is there at least some API giving the "next time" there will be a change on local time with respect UTC? ----- Original Message ----- From: Rob Kennedy To: [email protected] Sent: Tuesday, October 27, 2009 3:31 PM Subject: Re: [delphi-en] conversions between UTC and local time mauro russo wrote: > Dear all, > > I am using the following function in order to obtain the bias between local time and UTC: > > > function GetTimeZoneBias_min(): Integer; > var tz: TTimeZoneInformation; > begin > case GetTimeZoneInformation(tz) of > TIME_ZONE_ID_STANDARD: Result := -(tz.StandardBias + tz.Bias); > TIME_ZONE_ID_DAYLIGHT: Result := -(tz.DaylightBias + tz.Bias); > else > Result := 0; > end; > end; > > > and I use the result Res in the formula: locla_time = UTC + Res. > > > > Now, I would like to obtain the bias not at the current time, but according to a given UTC value. > > For example, now UTC is 9:47 at the 27th of october, > but how to obtain the bias when UTC was, for example, 8:35 at the 5th of july? If the StandardDate and DaylightDate members of TTimeZoneInformation don't have what you need, then Windows does not have what you need. -- Rob

