Вниз
Скачать: CL | DM;

Время по гринвичу   Найти похожие ветки 

 
Krok   (2009-04-03 16:02) [0]

Уважаемые мастера. Надо сформировать строку из даты/времени с учетом с смещения по Гринвичу.

Интернет полон советами, как получить точное время по Гринвичу. Обычно так:
var
 GlobalTime: TSystemTime;
 dGlobalTime : TDateTime;
begin
   GetSystemTime(GlobalTime);
   dGlobalTime := SystemTimeToDateTime(GlobalTime);
....

Беда в том, что он возвращает время, отличное от компьютерного на ЧЕТЫРЕ часа. Хотя пояс установлен - Москва +03:00.

Я предположил, что он умеет определять переход на летнее время. Но если дату на машине поменять на февраль, разница по прежнему четыре часа. Почему?

И в связи с этим другой вопрос. Как правильно указывать в таких случаях - с учетом перехода на летнее время или без него. Всегда "+03:00"?

Спасибо.


 
Krok   (2009-04-03 16:33) [1]

GetTimeZoneInformation()
Возвращает 3 часа


 
Anatoly Podgoretsky ©   (2009-04-03 16:46) [2]

> Krok  (03.04.2009 16:02:00)  [0]

Так отгон на час назад не делает перехода на зимнее время.
Четыре часа в наше время нормальное смещение для Москвы.
Но не совсем понятно, что ты хочешь сделать и для какой цели?


 
Anatoly Podgoretsky ©   (2009-04-03 16:47) [3]

> Krok  (03.04.2009 16:33:01)  [1]

GetTimeZoneInformation тоже правильно возвращает, он всегда будет возвращать -3 часа. Надо учитывать еще и переход на летнее время.


 
Krok   (2009-04-03 18:11) [4]

Так отгон на час назад не делает перехода на зимнее время.
Я на месяц назад "отгонял". Но Вы правы - не переводит, похоже.

Задание: формировать строку вида
«YYYY-MM-DD“T”HH24:MI:SSTZH:TZM»

Где YYYY – год
MM – месяц
DD – день
T – латинская буква “T”
HH24 – часы (от 0 до 24)
MI – минуты
SS - секунды
TZH:TZM – сдвиг от Гринвича (зона), часы и минуты, обязательно со знаком сдвига (+ или -, для часовых поясов РФ – всегда +),


Насчет добавлять ли летнее время, видимо, надо будет выяснять дополнительно.
А есть какие-нить "правильные" методы определения с какого момента летнее время, а с какого - зимнее? В смысле, ф-ции API.


 
Игорь Шевченко ©   (2009-04-03 18:42) [5]


> А есть какие-нить "правильные" методы определения с какого
> момента летнее время, а с какого - зимнее? В смысле, ф-ции
> API.


GetTimeZoneInformation


 
Игорь Шевченко ©   (2009-04-03 18:42) [6]

DaylightDate

A SYSTEMTIME structure that contains a date and local time when the transition from standard time to daylight saving time occurs on this operating system. If the time zone does not support daylight saving time or if the caller needs to disable daylight saving time, the wMonth member in the SYSTEMTIME structure must be zero. If this date is specified, the StandardDate member in this structure must also be specified. Otherwise, the system assumes the time zone data is invalid and no changes will be applied.

To select the correct day in the month, set the wYear member to zero, the wHour and wMinute members to the transition time, the wDayOfWeek member to the appropriate weekday, and the wDay member to indicate the occurrence of the day of the week within the month (1 to 5, where 5 indicates the final occurrence during the month if that day of the week does not occur 5 times).

If the wYear member is not zero, the transition date is absolute; it will only occur one time. Otherwise, it is a relative date that occurs yearly.


 
Krok   (2009-04-03 18:49) [7]

Спасибо



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: -0.896 c
15-1268825050
TUser
2010-03-17 14:24
2010.08.27
Сканируем в принтер!


15-1267122258
Fenik
2010-02-25 21:24
2010.08.27
YAML под Delphi


4-1232054248
Vemer
2009-01-16 00:17
2010.08.27
Как программа может узнать о запуске хранителя экрана?


2-1274357365
Nucer
2010-05-20 16:09
2010.08.27
Значок в ресурсе


15-1266493598
icWasya
2010-02-18 14:46
2010.08.27
Кодировка




   Наверх