Форум: "WinAPI";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
ВнизGetSystemTime возвращает не правильное время Найти похожие ветки
← →
@!!ex © (2006-09-15 20:34) [0]Использую GetSystemTime чтобы получать время по UTC.
Собсвтенно для этого функция и предназначена.....
У меня (+4 GMT) все работает на ура......
Тестил все нормально...
Отослал проект тестерам(Питер +3 GMT)....
Баг.. GetSystemTime возвращает не правильное время.
Отнимает 4 часа вместо 3.......
Внепонятках... Облазил весь инет...
и гуглил и яндексил... эффекта ноль...
Есть предположение что это из-за перехода на летнее время...
Но как с этим боротся?
← →
Ketmar © (2006-09-15 20:44) [1]убить себя об стену. или прочесть, наконец, справку. в которой найти сначала упоминание об UTC, а потом -- о GetLocalTime() и долго удивляться. но лучше убиться об стенку.
← →
@!!ex © (2006-09-15 21:28) [2]The GetSystemTime function retrieves the current system date and time. The system time is expressed in Coordinated Universal Time (UTC).
VOID GetSystemTime(
LPSYSTEMTIME lpSystemTime // address of system time structure
);
Parameters
lpSystemTime
Points to a SYSTEMTIME structure to receive the current system date and time.
Return Values
This function does not return a value.
← →
@!!ex © (2006-09-15 21:29) [3]The GetLocalTime function retrieves the current local date and time.
VOID GetLocalTime(
LPSYSTEMTIME lpSystemTime // address of system time structure
);
Parameters
lpSystemTime
Points to a SYSTEMTIME structure to receive the current local date and time.
Return Values
This function does not return a value.
← →
@!!ex © (2006-09-15 21:30) [4]Итак, нашел, прочитал.
Дальше?
← →
Ketmar © (2006-09-15 21:39) [5]> [4] @!!ex © (15.09.06 21:30)
дальше -- меняем клаву на лопату, и в дворники, в дворники...
← →
Fay © (2006-09-16 04:55) [6]2 Ketmar © (15.09.06 21:39) [5]
> дальше -- меняем клаву на лопату, и в дворники, в дворники...
апстену достаточно
← →
Ketmar © (2006-09-16 05:45) [7]> [6] Fay © (16.09.06 04:55)
> апстену достаточно
я передумал советовать "ап стену". пусть лучше тредится на благо страны там, где может.
← →
@!!ex © (2006-09-16 07:23) [8]Ну так может объясните идиоту в чем проблема?
← →
Ketmar © (2006-09-16 15:53) [9]и не подумаем. в справке всё написано. если ты не можешь просто найти информацю о том, что есть UTC, и чем оно отлиячается от локального времени -- тебе нельзя писать программы.
на крайний случай можно было всё выяснить экспериментально. путём вызова этих процедур и сравнения результатов. ты и это сделать поленился. разжёвывают в другом месте. например, на форуме Флёнова. здесь учат думать.
← →
@!!ex © (2006-09-16 16:57) [10]Еп. Для того чтобы сказать что такое UTC и чем оно отличается от Локального времени мн не надо лезть в справку.
UTC == GMT == Время по гринвичу
UTC это локальное время минус часовой пояс.
В справке написано что-то другое?
Перевожу что написано в справке:
The GetSystemTime function retrieves the current system date and time. The system time is expressed in Coordinated Universal Time (UTC).
Функция GetSystemTime возвращает текущее системное время и дату.
Системное время выражено в UTC.
Между строк написано еще что-то?
Может вы уважаемый просто умничаете и нихера не знаете?
В любом случае я не понимаю какого вы тут умничаете.
Если знаете - подскажите, думать меня учат в ВУЗЕ и на работе.
Но похоже не знаете....
← →
@!!ex © (2006-09-16 17:34) [11]О системнов времени из MSDN
System Time
System time is the current date and time of day. The system keeps time so that your applications have ready access to accurate time. The system bases system time on coordinated universal time (UTC). UTC-based time is loosely defined as the current date and time of day in Greenwich, England.
When the system first starts, it sets the system time to a value based on the real-time clock of the computer and then regularly updates the time. To retrieve the system time, use the GetSystemTime function. GetSystemTime copies the time to a SYSTEMTIME structure that contains individual members for month, day, year, weekday, hour, minute, second, and milliseconds. It is easy to display this format to a user.
You can also obtain the system time in file time format using the GetSystemTimeAsFileTime function. GetSystemTimeAsFileTime copies the time to a FILETIME structure.
To set the system time, use the SetSystemTime function. SetSystemTime assumes you have specified a UTC-based time. If you change the system time, you should send the WM_TIMECHANGE message to all top-level windows by using the SendMessage function.
The GetSystemTimeAdjustment and SetSystemTimeAdjustment functions synchronize the time-of-day clock with another time source using a periodic time adjustment applied at each clock interrupt.
Note that the system can periodically refresh the time by synchronizing with a time source. Because the system time can be adjusted either forward or backward, do not compare system time readings to determine elapsed time. Instead, use one of the methods described in Windows Time.
← →
@!!ex © (2006-09-16 17:36) [12]Перечитываю всю инфу которую дает MSDN по Теме времени...
Все больше убеждаюсь что вы просто не знаете что сказать, вот и несете бред.
← →
Ketmar © (2006-09-16 17:45) [13]убедил. не знаю. жди знающего.
← →
@!!ex © (2006-09-16 17:50) [14]Ок. Мир.
← →
@!!ex © (2006-09-16 18:43) [15]вопрос закрыт. Забить на GetSystemTime
Считаю UTC вручную.
← →
PSPF2003 © (2006-09-16 18:51) [16]Советую воспользоваться [1]
← →
@!!ex © (2006-09-16 18:53) [17]Я думал над этим вариантом. Меня отговорили. Стенку жалко.
Ваши предложения?
← →
PSPF2003 © (2006-09-16 18:59) [18]Выпей йаду
← →
@!!ex © (2006-09-16 19:00) [19]Денег нет на йад.
Следующий.
← →
Ketmar © (2006-09-16 19:00) [20]блин. ну что тут неясного? системе лучше знать, какое там время. если она что-то возвращает, то делает это правильно. неужели ты думаешь, что за столько лет никто бы не заметил баг в подобной функции?
кстати, UTC -- это не GMT. впрочем, различие малозаметное глазом.
← →
@!!ex © (2006-09-16 19:04) [21]Функция GetSystemTime не учитывает переход на летнее время.
Это не баг, это фича.
Собственно я и пытаюсь узнать КАК это исправить.
не узнал.
Поэтому считаю время руками.
← →
@!!ex © (2006-09-16 19:18) [22]Ketmar © (16.09.06 19:00) [20]
кстати, UTC -- это не GMT. впрочем, различие малозаметное глазом.
>MSDN>UTC-based time is loosely defined as the current date and time of day in Greenwich, England.
Наверно у меня трудности с переводом.
Не проведете ликбез студенту?
← →
@!!ex © (2006-09-16 19:19) [23]Кстати, серьезно, а то както с сарказмом получилось.
извиняюсь.
Действительно всегда думал что ЮТС и ГМТ - одно и тоже.
Было бы интересно узнать отличия.
← →
Ketmar © (2006-09-16 19:22) [24]> [22] @!!ex © (16.09.06 19:18)
"loosely defined" -- примерно "примерно то же самое". %-)
я же сказал -- разница глазом не заметна. но, в принципе, UCT может отличаться от GMT на интервал, не превышающий одной секунды. ну и -- заведуют этими временами разные конторы. вкратце -- так.
← →
Ketmar © (2006-09-16 19:23) [25]да, кстати: извиняюсь за резкий тон в начале. сейчас перечитал вопрос, и понял, что дурак тут на самом деле я -- "чукча не читатель, чукча писатель". отвечал не совсем на то, о чём спрашивали. %-)
← →
@!!ex © (2006-09-16 19:24) [26]Понятно. Спасибо.
← →
Ketmar © (2006-09-16 19:25) [27]вообще -- ситуация прикольная, как всегда. функции, возвращающей GMT, в винде нет. но часовые пояса задаются со смещением именно от него. я понимаю, что традиция, но и путаница одновременно. %-)
← →
@!!ex © (2006-09-16 19:25) [28]Ketmar © (16.09.06 19:23) [25]
ниче. Бывает.
Это помогло посмотреть с другой стороны на себя. :)
Поскольку тоже пару раз резко отвечал на форумах, хотя это было не оправданно.
← →
Fay © (2006-09-17 02:02) [29]Для проверки программы в часовом поясе Питера НИЧЕГО НИКУДА ОТСЫЛАТЬ НЕ НАДО.
> Есть предположение что это из-за перехода на летнее время...
Совершенно правильное предположение.
> Но как с этим боротся?
С чем?!
← →
Германн © (2006-09-17 02:38) [30]
> Fay © (17.09.06 02:02) [29]
>
...
> > Но как с этим боротся?
> С чем?!
>
Вот и я тоже не понимаю "с чем борется автор сабжа"?
← →
Ketmar © (2006-09-17 03:39) [31]что тут неясного? с переходами на летнее/зимнее. я тоже считаю, что эти переходы -- редкостный идиотизм. если какой-то кандидат пообещает это в Украине отменить -- нарушу свой принцип и пойду за него голосовать.
← →
Fay © (2006-09-17 07:31) [32]2 Ketmar © (17.09.06 3:39) [31]
Я правильно понял, афтару нужно проголосовать?
← →
Ketmar © (2006-09-17 07:46) [33]скорее всего. ибо исходя из [0] -- не нравится именно сам факт наличия перехода.
← →
Anatoly Podgoretsky © (2006-09-17 10:56) [34]UTC == GMT == Время по гринвичу
Откуда такой вывод сделан
← →
Anatoly Podgoretsky © (2006-09-17 10:59) [35]Ketmar © (16.09.06 19:22) [24]
Второе работает с летнем/зимнем временем, поэтому оно ни как не может быть равным первому.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.042 c