Подтвердить что ты не робот

Разделите дату и сохраните время

Многие люди спрашивают, как разделить время и сохранить дату, но как насчет другого пути? Дано:

myDateTime <- "11/02/2014 14:22:45"

Я бы хотел:

myTime
[1] "14:22:45"

Часовой пояс не нужен.

Я уже пробовал (из других ответов)

as.POSIXct(substr(myDateTime, 12,19),format="%H:%M:%S")

[1] "2013-04-13 14:22:45 NZST"

Цель состоит в том, чтобы анализировать события, записанные в течение нескольких дней только по времени суток.

Спасибо

Edit:

Оказывается, нет чистого "временного" объекта, поэтому каждый раз также должна быть дата.

В конце я использовал

as.POSIXct(as.numeric(as.POSIXct(myDateTime)) %% 86400, origin = "2000-01-01")

а не решение символа, потому что мне нужно сделать арифметику по результатам. Это решение аналогично моему первоначальному, за исключением того, что в этом случае можно контролировать постоянную дату - "2000-01-01", тогда как моя попытка просто использовала текущую дату во время выполнения.

4b9b3361

Ответ 1

Если время в течение дня GMT полезно для вашей проблемы, вы можете получить это с помощью %%, оператора остатка, взяв остаток по модулю 86400 (количество секунд в день).

stamps <- c("2013-04-12 19:00:00", "2010-04-01 19:00:01", "2018-06-18 19:00:02")
as.numeric(as.POSIXct(stamps)) %% 86400
## [1] 0 1 2

Ответ 2

Я думаю, что вы ищете функцию format.

(x <- strptime(myDateTime, format="%d/%m/%Y %H:%M:%S"))
#[1] "2014-02-11 14:22:45"
format(x, "%H:%M:%S")
#[1] "14:22:45"

Это character, а не "время", но будет работать с чем-то вроде aggregate, если это то, что вы подразумеваете под "анализом событий, записанных в течение нескольких дней только по времени суток".