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

Конвертировать секунды в дни: часы: минуты: секунды

Я хочу преобразовать секунды в часах минут и секунд в R.

Пример

86400seconds-1day

gmdate("d H:i:s",86400)

Вот как я пытался.

4b9b3361

Ответ 1

Вы можете попробовать

library(lubridate)
seconds_to_period(86400)
#[1] "1d 0H 0M 0S"

seconds_to_period(48000)
#[1] "13H 20M 0S"

Если вам нужно format

td <- seconds_to_period(86400)
sprintf('%02d %02d:%02d:%02d', day(td), [email protected], minute(td), second(td))
#[1] "01 00:00:00"

Если он охватывает >99 дней,

td <- seconds_to_period(1e7)
sprintf('%03d %02d:%02d:%02d', day(td), [email protected], minute(td), second(td))
#[1] "115 17:46:40"

Ответ 2

Это также работает с использованием seconds.to.hms от kimisc, хотя и не столь изящным, как ответ @akrun:

library(kimisc)
library(dplyr)
library(stringr)

HMS = seconds.to.hms(86400) 

HMS = seconds.to.hms(48000) 

HMS = seconds.to.hms(1e7) 

HMS %>%
  str_extract("^\\d+") %>%
  as.numeric() %>%
  {paste(.%/%24, .%%24)} %>%
  str_replace(HMS, "^\\d+", .)

Результат:

[1] "1 0:00:00"

[1] "0 13:20:00"

[1] "115 17:46:40"