powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как получить UNIX/POSIX time для дат ранее 1/1/1601
12 сообщений из 12, страница 1 из 1
Как получить UNIX/POSIX time для дат ранее 1/1/1601
    #39598285
avs63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Пытаюсь преобразовать дату 01.03.1480г (дата события из каталога) в UNIX time
по схеме SystemTimeToFileTime -> учет смещения в тиках -> UNIX time.
Для дат/времени начиная с 01/01/1601 00:00:00 и далее все работает на УРА. До 1601 года
функция SystemTimeToFileTime завершается с ошибкой (год не верен). Не могу понять как
правильно надо преобразовывать такие даты?

Может кто поможет страждущему советом или ссылкой. Буду очень признателен.
...
Рейтинг: 0 / 0
Как получить UNIX/POSIX time для дат ранее 1/1/1601
    #39598308
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avs63Пытаюсь преобразовать дату 01.03.1480г (дата события из каталога) в UNIX time

UNIX time это число секунд, истёкшее после 1.1.1970. Выводы сделать сумеешь?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как получить UNIX/POSIX time для дат ранее 1/1/1601
    #39598787
avs63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov UNIX time это число секунд, истёкшее после 1.1.1970. Выводы сделать сумеешь?.

Где вы такое вычитали, любезный? Используйте соответствующее смещение и получите
дату до 1970 г.
...
Рейтинг: 0 / 0
Как получить UNIX/POSIX time для дат ранее 1/1/1601
    #39598850
Любезный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторГде вы такое вычитали, любезный? Используйте соответствующее смещение и получите дату до 1970 г.
1.1.1970 00:00:00 - это ноль в ЮниксТайм. Каждую секунду прибавляется кол.
Соответственно, очевидно же, что получится отрицательное число, которому надо еще подобрать разрядность. И ЮниксТайм плохо подходит для таких дат.
...
Рейтинг: 0 / 0
Как получить UNIX/POSIX time для дат ранее 1/1/1601
    #39598897
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avs63Пытаюсь преобразовать дату 01.03.1480г (дата события из каталога) в UNIX time
по схеме SystemTimeToFileTime -> учет смещения в тиках -> UNIX time.
Для дат/времени начиная с 01/01/1601 00:00:00 и далее все работает на УРА. До 1601 года
функция SystemTimeToFileTime завершается с ошибкой (год не верен). Не могу понять как
правильно надо преобразовывать такие даты?


https://msdn.microsoft.com/en-us/library/windows/desktop/ms724950(v=vs.85).aspx
SYSTEMTIME structure
...
wYear The year. The valid values for this member are 1601 through 30827.

Короче не поддерживаются в винде такие даты.
...
Рейтинг: 0 / 0
Как получить UNIX/POSIX time для дат ранее 1/1/1601
    #39599039
avs63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Anatoly Moskovsky

Описание структуры SYSTEMTIME мне известно, и про ограничение
wYear я тоже в курсе. Но ведь должен-же быть какой-то способ получить
дату до 1601 года? Чисто математически, используя только операции с
FILETIME, я думаю, можно выйти на результат. Однако, я надеялся
на существование каких-то стандартных функций в Win API. Похоже я
ошибался и придется писать собственную функцию на вычисление разницы
между датами.
...
Рейтинг: 0 / 0
Как получить UNIX/POSIX time для дат ранее 1/1/1601
    #39599044
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovavs63Пытаюсь преобразовать дату 01.03.1480г (дата события из каталога) в UNIX time

UNIX time это число секунд, истёкшее после 1.1.1970. Выводы сделать сумеешь?..


Не сумел...
...
Рейтинг: 0 / 0
Как получить UNIX/POSIX time для дат ранее 1/1/1601
    #39599046
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avs63Добрый день!

Пытаюсь преобразовать дату 01.03.1480г (дата события из каталога) в UNIX time
по схеме SystemTimeToFileTime -> учет смещения в тиках -> UNIX time.
Для дат/времени начиная с 01/01/1601 00:00:00 и далее все работает на УРА. До 1601 года
функция SystemTimeToFileTime завершается с ошибкой (год не верен). Не могу понять как
правильно надо преобразовывать такие даты?

Может кто поможет страждущему советом или ссылкой. Буду очень признателен.

boost::datetime если что...
...
Рейтинг: 0 / 0
Как получить UNIX/POSIX time для дат ранее 1/1/1601
    #39599266
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivboost::datetime если что...
Главное помнить что и там если лимит снизу, 1400 н.э. кажется ))
...
Рейтинг: 0 / 0
Как получить UNIX/POSIX time для дат ранее 1/1/1601
    #39599391
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
avs63Похоже я
ошибался и придется писать собственную функцию на вычисление разницы
между датами.


не забудьте учесть при написании :
ВИКИВпервые григорианский календарь был введён папой римским Григорием XIII в католических странах 4 октября 1582 года взамен прежнего юлианского: следующим днём после четверга 4 октября стала пятница 15 октября. Григорианский календарь используется в большинстве государств и стран мира[2]. В литературе также применяется название — Новый стиль.
...
Рейтинг: 0 / 0
Как получить UNIX/POSIX time для дат ранее 1/1/1601
    #39599533
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avs63Добрый день!

Пытаюсь преобразовать дату 01.03.1480г (дата события из каталога) в UNIX time
по схеме SystemTimeToFileTime -> учет смещения в тиках -> UNIX time.
Для дат/времени начиная с 01/01/1601 00:00:00 и далее все работает на УРА. До 1601 года
функция SystemTimeToFileTime завершается с ошибкой (год не верен). Не могу понять как
правильно надо преобразовывать такие даты?

Может кто поможет страждущему советом или ссылкой. Буду очень признателен.
Советом - могу.
Пиши свой формат отсчета дат и преобразование в него и из него. Определи его как нужно именно тебе и вперед.
В принципе, можно потоптаться по чужим граблям и содрать из каких-нибудь опенсорсных датабейзных проектов.
Я в такой ситуации потоптался, набил шишек и в итоге все равно пришел к первому варианту. Ну, может, другим повезет больше))
...
Рейтинг: 0 / 0
Как получить UNIX/POSIX time для дат ранее 1/1/1601
    #39599913
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avs63to Anatoly Moskovsky

Описание структуры SYSTEMTIME мне известно, и про ограничение
wYear я тоже в курсе. Но ведь должен-же быть какой-то способ получить
дату до 1601 года?
Нет никакого смысла фиксировать точное время до секунд в эти исторические периоды.
Не было самого измерителя этого самого времени. И календари были весьма относительны.

Тоесть ваша инженерная инициатива похвальна, но стоит ли результат того?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как получить UNIX/POSIX time для дат ранее 1/1/1601
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]