#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
и возвращается.