【问题标题】:Convert time in hours from numeric to HMS format将时间以小时为单位从数字转换为 HMS 格式
【发布时间】:2020-11-26 10:20:38
【问题描述】:

如何将表示时间的数字从数字转换为 HMS 格式。

例如:

8.0 -> 08:00:00
0.5 -> 00:30:00
0.25 -> 00:15:00

【问题讨论】:

标签: r datetime time format


【解决方案1】:

转换为秒,利用seconds_to_periodslubridate改成hms

hms::hms(lubridate::seconds_to_period(floor(v1 * 60 *60)))
#08:00:00
#00:30:00
#00:15:00

数据

v1 <- c(8, 0.5, 0.25)

【讨论】:

    【解决方案2】:

    这是一个基本的 R 选项

    h <- x%/%1
    m <- floor(x%%1 * 60)
    s <- round((x%%1 * 60)%%1*60)
    sprintf("%02d:%02d:%02d",h,m,s)
    

    这样

    > sprintf("%02d:%02d:%02d",h,m,s)
    [1] "08:00:00" "00:30:00" "00:15:00" "03:45:22"
    

    数据

    x <- c(8.0,0.5,0.25,3.756)
    

    【讨论】:

      【解决方案3】:

      另一个基本 R 选项:

      x <- c(8, 0.5, 0.25)
      format(as.POSIXct(x * 3600, origin = '1970-01-01', tz = 'UTC'), '%T')
      #[1] "08:00:00" "00:30:00" "00:15:00"
      

      【讨论】:

      • 优雅的解决方案。
      猜你喜欢
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 2011-05-07
      • 2015-01-24
      • 1970-01-01
      • 2012-02-10
      相关资源
      最近更新 更多