8
Come ottengo l'ora corrente da diversi fusi orari in Delphi. Se uso TidSNTP mi darà solo il fuso orario nel mio locale.Come si ottiene l'ora corrente in un diverso TimeZone in Delphi?
Come ottengo l'ora corrente da diversi fusi orari in Delphi. Se uso TidSNTP mi darà solo il fuso orario nel mio locale.Come si ottiene l'ora corrente in un diverso TimeZone in Delphi?
È possibile convertire facilmente ora locale la fascia oraria differente con delphi-tzdb (Time Zone Database for Delphi).
Di seguito è riportato l'esempio dal suo documentation.
var
LSydney: TTimeZone;
LMadeUpLocalTime, LUniversalTime,
LSydneyTime: TDateTime;
begin
// Get the Sydney time zone
LSydney := TBundledTimeZone.GetTimeZone('Australia/Sydney');
// Encode a local date/time value -- 14th March 2009 at 12:45:00 PM
LMadeUpLocalTime := EncodeDateTime(2009, 03, 14, 12, 45, 00, 00);
// Find out what was the time in Sydney at that moment
LUniversalTime := TTimeZone.Local.ToUniversalTime(LMadeUpLocalTime);
LSydneyTime := LSydney.ToLocalTime(LUniversalTime);
WriteLn(Format('When in my time zone the time was %s, in Sydney it was %s.',
[DateTimeToStr(LMadeUpLocalTime), DateTimeToStr(LSydneyTime)]));
end;
Questa è un'ottima risorsa Delphi. E poiché si basa sul database fuso orario IANA, può essere facilmente aggiornato con i dati più recenti, ad esempio quando un paese del Pacifico si muove attraverso il dateline o l'Argentina cambia le sue date e le regole di risparmio di luce del giorno nuovo. – frogb