Есть задача получение количества секунд в локальном времени (с учетом часового пояса и перехода на летнее/зимнее время), прошедших с 1 января 1970 г. (UNIX TimeStamp).
Возможная реализация c/c++, WinApi, MFC.
Есть ли что-то стандартное? Или нужно писать алгоритм самому (писать начал, всю голову сломал).
Заранее, спасибо!
Re: Получение количества секунд локального временис 1970 г
Здравствуйте, dandare1981, Вы писали:
D>Добрый день!
D>Есть задача получение количества секунд в локальном времени (с учетом часового пояса и перехода на летнее/зимнее время), прошедших с 1 января 1970 г. (UNIX TimeStamp). D>Возможная реализация c/c++, WinApi, MFC. D>Есть ли что-то стандартное? Или нужно писать алгоритм самому (писать начал, всю голову сломал).
D>Заранее, спасибо!
GetLocalTime -> SystemTimeToFileTime -> и сдвиг 1601 -> 1970
Re: Получение количества секунд локального временис 1970 г
Здравствуйте, dandare1981, Вы писали:
D>Есть задача получение количества секунд в локальном времени (с учетом часового пояса и перехода на летнее/зимнее время), прошедших с 1 января 1970 г. (UNIX TimeStamp).
число секунд, прошедших с 1 января 1970 г не зависит от часового пояса и летнего времени — это time()
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[2]: Получение количества секунд локального временис 1970
Здравствуйте, Odi$$ey, Вы писали:
OE>Здравствуйте, dandare1981, Вы писали:
D>>Есть задача получение количества секунд в локальном времени (с учетом часового пояса и перехода на летнее/зимнее время), прошедших с 1 января 1970 г. (UNIX TimeStamp).
OE>число секунд, прошедших с 1 января 1970 г не зависит от часового пояса и летнего времени — это time()
Забыл добавить, что в винде отключена опция "Автоматический перевод на летнее/зимнее время".
В моем случае железка возвращает количество секунд прошедших от 1970 года по локальному времени.
Про time() знаю...
Re[2]: Получение количества секунд локального временис 1970
Здравствуйте, рыбак, Вы писали:
Р>Здравствуйте, dandare1981, Вы писали:
D>>Добрый день!
D>>Есть задача получение количества секунд в локальном времени (с учетом часового пояса и перехода на летнее/зимнее время), прошедших с 1 января 1970 г. (UNIX TimeStamp). D>>Возможная реализация c/c++, WinApi, MFC. D>>Есть ли что-то стандартное? Или нужно писать алгоритм самому (писать начал, всю голову сломал).
D>>Заранее, спасибо!
Р>GetLocalTime -> SystemTimeToFileTime -> и сдвиг 1601 -> 1970
Забыл добавить, что в винде отключена опция "Автоматический перевод на летнее/зимнее время".
Можно подробнее со сдвигом?
Re[3]: Получение количества секунд локального временис 1970
Здравствуйте, dandare1981, Вы писали:
D>>>Есть задача получение количества секунд в локальном времени (с учетом часового пояса и перехода на летнее/зимнее время), прошедших с 1 января 1970 г. (UNIX TimeStamp).
OE>>число секунд, прошедших с 1 января 1970 г не зависит от часового пояса и летнего времени — это time()
D>Забыл добавить, что в винде отключена опция "Автоматический перевод на летнее/зимнее время". D>В моем случае железка возвращает количество секунд прошедших от 1970 года по локальному времени.
еще раз — число секунд оно и есть число секунд и не зависит от того крутят или не крутят время с летнего на зимнее и обратно
D>Про time() знаю...
ну и?
... << RSDN@Home 1.2.0 alpha 4 rev. 0>>
Re[2]: Получение количества секунд локального временис 1970
Здравствуйте, Odi$$ey, Вы писали:
OE>еще раз — число секунд оно и есть число секунд и не зависит от того крутят или не крутят время с летнего на зимнее и обратно
Ты это винде скажи. Она же считает, будто системные часы показывают местное время. Например, сколько прошло секунд с начала Эпохи, если часы показывают 01:30:00 25.10.2009 мск (показания, которые имеют место дважды в году)?
До последнего не верил в пирамиду Лебедева.
Re[5]: Получение количества секунд локального временис 1970
Здравствуйте, Roman Odaisky, Вы писали:
OE>>еще раз — число секунд оно и есть число секунд и не зависит от того крутят или не крутят время с летнего на зимнее и обратно
RO>Ты это винде скажи. Она же считает, будто системные часы показывают местное время. Например, сколько прошло секунд с начала Эпохи, если часы показывают 01:30:00 25.10.2009 мск (показания, которые имеют место дважды в году)?
винда все прекрасно знает (слева — локальное уральское время, справа — time() (программка на VC9)) :
заметь, что несмотря на скачки локального времени, time() совершенно верно только нарастает, число секунд, прошедшее с 1 января 1970 не может начать уменьшаться.
з.ы. только не надо тестироваться на CBuilder5, там действительно совершенно левая time(), которая прыгает вместе с локальным временем.