часовой пояс — C ++ конвертировать время ET в CET или что-то еще

Я разбираю файлы с указанием даты и времени.
Допустим, у меня есть дата и время в следующем формате:

2009/07/18 10:48:39 CET (value in txt-file)

Это в ET:

2009/07/18 4:48:39 ET (could also be the value i parsed)

Есть ли решение для конвертации времени / даты? Может быть, повысить?

Не удалось найти полезную информацию в буст-документах.

Допустим, я хочу перейти из CET в ET или из ET в EST или из CET в EST на c ++, что бы вы сделали?

0

Решение

STRFTIME позволяет распечатать struct tm* объект, использующий символы форматирования даты и времени (% Y,% m,% d и т. д.).

Что вы могли бы сделать, это загрузить struct tm* возразите, проанализировав ваши входные данные (при условии, что это регулярно, для этого не нужно много кода), затем измените отдельные части структуры tm с помощью некоторой пользовательской логики, основанной на преобразовании вашего часового пояса (добавьте час, затем проверьте, если вам нужно чтобы обновить день на основе нового значения часа), затем распечатайте это значение даты и времени в формате, который вы хотите, через strftime. Не так просто, как функции strptime / strftime, доступные в php, но, тем не менее, это решение.

0

Другие решения

рекомендую https://github.com/google/cctz

Также обратите внимание, что «CET» и «ET» не являются идентификаторами зоны реального времени. Они могут быть аббревиатурами для некоторого часового пояса, но они не уникально идентифицируют фактический часовой пояс. Если у вас есть некоторый контроль над данными в файле, вы должны изменить «CET» и «ET» на числовые значения смещения UTC, например, полученные %z от strftime() (а также cctz::Format()). Числовое смещение UTC и поля Y / M / D H: M: S позволят вам правильно разобрать момент времени.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector