Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.076 c
15-1267488778
Дмитрий
2010-03-02 03:12
2010.08.27
игры на delphi


2-1270210504
Вэн
2010-04-02 16:15
2010.08.27
Апдейтер для ММО


13-1125398405
Cherrex
2005-08-30 14:40
2010.08.27
WIN и VCL


2-1271921806
Эренка
2010-04-22 11:36
2010.08.27
Ошибка деления на ноль, комплексные функции


9-1188158694
Mr.Vlad
2007-08-27 00:04
2010.08.27
Turn





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский