Я разбираю файлы с указанием даты и времени.
Допустим, у меня есть дата и время в следующем формате:
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 ++, что бы вы сделали?
STRFTIME позволяет распечатать struct tm*
объект, использующий символы форматирования даты и времени (% Y,% m,% d и т. д.).
Что вы могли бы сделать, это загрузить struct tm*
возразите, проанализировав ваши входные данные (при условии, что это регулярно, для этого не нужно много кода), затем измените отдельные части структуры tm с помощью некоторой пользовательской логики, основанной на преобразовании вашего часового пояса (добавьте час, затем проверьте, если вам нужно чтобы обновить день на основе нового значения часа), затем распечатайте это значение даты и времени в формате, который вы хотите, через strftime. Не так просто, как функции strptime / strftime, доступные в php, но, тем не менее, это решение.
рекомендую https://github.com/google/cctz
Также обратите внимание, что «CET» и «ET» не являются идентификаторами зоны реального времени. Они могут быть аббревиатурами для некоторого часового пояса, но они не уникально идентифицируют фактический часовой пояс. Если у вас есть некоторый контроль над данными в файле, вы должны изменить «CET» и «ET» на числовые значения смещения UTC, например, полученные %z
от strftime()
(а также cctz::Format()
). Числовое смещение UTC и поля Y / M / D H: M: S позволят вам правильно разобрать момент времени.