Преобразование даты с меткой времени и значением смещения в datetime в r

#r #string #time #lubridate

#r #строка #время #lubridate

Вопрос:

Допустим, у меня есть символьный вектор, содержащий якобы временные метки в следующем формате: "20180812 17:00:00.000 -0700" -Я хотел бы преобразовать это в следующее 2018-08-12 10:00:00 .

Я пробовал следующее, но безрезультатно:

 as.POSIXct(strptime("20180812 17:00:00.000 -0700", "YYYY-MM-DD HH:mm:ss"))
[1] NA

lubridate::ymd_hms("20180812 17:00:00.000 -0700")
[1] "2018-08-13 UTC"
  

Комментарии:

1. "20180812" это не то же самое, что "YYYY-MM-DD" (тире!), что в любом случае не strptime является синтаксисом. Вы используете язык Excel, вы должны использовать символы типа "%Y%m%d %H:%M:%OS %z" .

2. А именно, as.POSIXct("20180812 17:00:00.000 -0700", format="%Y%m%d %H:%M:%OS %z") работает. Однако ваш lubridate вызов возвращает POSIXt объект timestamp. Однако, когда R видит, что «совершенно полночь» (UTC), он представляет это как объект, подобный дате, вместо того, чтобы показывать, что это произошло в полночь.

3. Какова логика получения 2018-08-12 10:00:00 ? В UTC это было бы, 2018-08-13 00:00:00 что ymd_hms и возвращается.