Как отформатировать смещение часового пояса в lubridate - PullRequest
1 голос
/ 05 ноября 2019

Я хочу отформатировать дату в формате ISO 8601, используя lubridate. На данный момент код у меня разбирает дату почти так, как я хочу. Единственное, что я хочу изменить, это добавить двоеточие в смещение часового пояса. Мой код на данный момент:

dateTime <- str_match(fileName, dateTimeRegex)[2] %>% ymd_hms() %>% strftime(format = "%y-%m-%dT%H:%M:%S%z", tz = "UTC")

Пример вывода: «19-09-26T10: 45: 00 + 0000» Ожидаемый вывод: «19-09-26T10: 45: 00 + 00: 00»

Есть ли простой способ сделать это, не анализируя это вручную? % z создает 0000, но мне нужно двоеточие

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Мы можем использовать регулярные выражения для достижения желаемого результата. Использование sub

x <- "19-09-26T10:45:00+0000"

sub("(.*\\+)(\\d{2})(\\d{2})", "\\1\\2:\\3", x)
#[1] "19-09-26T10:45:00+00:00"
0 голосов
/ 05 ноября 2019

С Википедия (выделено):

Смещение UTC - это разница в часах и минутах от всемирного координированного времени (UTC или GMT) для определенного места исвидание. Обычно он отображается в формате ± [чч]: [мм], ± [чч] [мм] или ± [чч] . Таким образом, если описываемое время на один час опережает UTC (например, время в Берлине зимой), смещение UTC будет "+ 01:00", "+0100" или просто "+01".

HH:MM - это всего лишь один из способов форматирования временных смещений, другими являются HHMM и HH, поэтому ваш вывод соответствует ISO 8601.

...