Функции для локального времени в UTC

Делимся вариантами решения наиболее часто задаваемых вопросов.

Модератор: Модераторы

Ответить
max

Функции для локального времени в UTC

Сообщение max »

Здравствуйте!

Не получается декодировать: 2002-01-01 01:00:00 +0000 UTC, вот в этот тип данных: TDateTime.

пробовал:
StrToDate();
StrToDateTime();
TryStrToDate();
TryStrToDateTime();
Везде пишет - неправильная дата.

Какая функция для декодирования в TDateTime? (Нужно получить локальное время)
И там есть ещё возможность задавать, TFormatSettings и сепаратор, но и это не помогает.
Какие параметры нужно задать, чтобы перестали выводиться error?
Пожалуйста, дайте пример рабочего кода.
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Сообщение olegy123 »

max писал(а):Не получается декодировать:

и не получится, этот тип данных появился позднее перечисленных функций.

но есть решение ISO 8601

Добавлено спустя 6 минут 17 секунд:
пишут что Iso8601ToDate есть в lazarus в двух пакетах
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

max писал(а):Везде пишет - неправильная дата

Неправильная дата начинается с "+0000". Если Вас интересует только время UTC, а не его эквивалент в локальном (для Вашего часового пояса) времени, то вполне достаточно будет предварительно обрезать конец строки, который начинается с "+".
Для получения Вашего локального времени нужно прибавить те цифры, которые идут после символа "+", там время в часах и минутах. Либо не заморачиваясь с парсингом строки, просто прибавить то количество часов, которое соответствует Вашей локали. :-)
Это на тот случай, если сами захотите сделать. ;-)
max

Сообщение max »

olegy123 писал(а):пишут что Iso8601ToDate есть в lazarus в двух пакетах

thanks.
Ответить