Конвертировать точный вывод Sys.time () в строку / символ в R? - PullRequest
3 голосов
/ 14 января 2020

Как мы можем получить точный вывод Sys.time() (например, "2020-01-14 17:21:31 AEDT") в виде строки / символьного вектора?

Фон

Вывод моего Sys.time() составляет

[1] "2020-01-14 17:21:31 AEDT"

, dput() которого

structure(1578982891.74164, class = c("POSIXct", "POSIXt"))

В консоли, похоже, это может быть class character, но, как мы видим из dput (или по вызову class()), это не

structure(1578982891.74164, class = c("POSIXct", "POSIXt")) %>% class()
[1] "POSIXct" "POSIXt" 

Точный вывод после - "2020-01-14 17:21:31 AEDT", где "2020-01-14 17:21:31 AEDT" %>% class - character.

Также обратите внимание: я бы хотел не использовать внешние пакеты для этого

Что я пробовал до сих пор

Очевидная вещь, которую стоит попробовать, Sys.time() %>% as.character, удаляет символы в конце (AEDT в данном случае), что не здесь не нужно

Ответы [ 2 ]

5 голосов
/ 14 января 2020

Одним из вариантов будет использование format(), которое может принимать Sys.time() в качестве ввода и генерировать вывод символа:

format(Sys.time(), "%Y-%m-%d %H:%M:%S %Z")

[1] "2020-01-14 07:40:06 CET"
4 голосов
/ 14 января 2020

Тим дает канонический ответ - вы должны знать и знать метод format для классов Date и POSIXt. Обязательно читайте ?strptime регулярно.

Обратите внимание, что as.character(Sys.time()) будет использовать POSIXt метод as.character, который на самом деле является простой оболочкой для format:

print(as.character.POSIXt)
# function (x, ...) 
# format(x, ...)
# <bytecode: 0x7fbb67f28b20>
# <environment: namespace:base>

Так что вы могли бы использовать as.character, если это кажется вам более естественным; проще всего было бы просто добавить usetz = TRUE:

as.character(Sys.time(), usetz = TRUE)
# [1] "2020-01-14 15:22:12 +08"

Вы также можете использовать аргумент tz для более точного управления часовым поясом:

as.character(Sys.time(), tz = 'Asia/Jakarta', usetz = TRUE)
# [1] "2020-01-14 14:25:47 WIB"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...