首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将一个数字转换为时间(0,5小时= 00:30:00)

将一个数字转换为时间(0,5小时= 00:30:00)
EN

Stack Overflow用户
提问于 2018-01-17 13:03:53
回答 3查看 245关注 0票数 6

我正在尝试将一个数字转换成时间格式。例如:我计算一辆电动汽车在11 kWh的充电站要充电多长时间。

  • 能源需求- 2,8 kWh
  • 充电时间=2,8kWh/11 kWh = 0,257 h
  • 0,257小时= 15分25秒。= 00:15:25

如何在R中将0,257 h转换为00:15:25

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-17 13:18:10

根据这个例子,我们将假设输入小于24 (但是如果不是这样的话,可以根据这种输入应该产生的内容的定义来修改这些输入以处理这些输入)。

1) chron::times像这样使用chron timestimes以一天的分数来度量时间,因此将小时(.257)除以24,得到它所代表的一天的分数。

代码语言:javascript
复制
library(chron)

times(.257 / 24)
## [1] 00:15:25

这给出了一个chron "times"类对象。如果x是这样一个对象,请使用format(x)将其转换为字符串(如果需要)。

2) POSIXct --它不使用包,尽管它更长。它以字符串的形式返回时间。POSIXct以秒为单位度量时间,因此将小时(.257)乘以3600,因为一小时内有3600秒。

代码语言:javascript
复制
format(as.POSIXct("1970-01-01") + 3600 * .257, "%H:%M:%S")
## [1] "00:15:25"

2a)这种变异也会起作用。这是较长的,但不涉及转换因素。它返回一个字符串。

代码语言:javascript
复制
format(as.POSIXct("1970-01-01") + as.difftime(.257, units = "hours"), "%H:%M:%S")
## [1] "00:15:25"

更新:添加(2)。还增加(2a)和改进(2)。

票数 6
EN

Stack Overflow用户

发布于 2018-01-17 13:21:39

格罗德迪克的回答似乎就是这样的。但是,如果必须在基数R中这样做,则只需计算小时、分钟和第二个组件,并手动构建时间字符串:

代码语言:javascript
复制
x <- 2.257                               # number of hours
total <- round(x*60*60, digits=0)        # the total number of seconds
hours <- trunc(total / (60*60))
minutes <- trunc((x - hours) * 60)
seconds <- total %% 60

ts <- paste0(formatC(hours, width=2, flag="0"), ":",
             formatC(minutes, width=2, flag="0"), ":",
             formatC(seconds, width=2, flag="0"))
ts

[1] "02:15:25"

演示

票数 3
EN

Stack Overflow用户

发布于 2018-01-17 15:19:55

潮间带解决方案将使用hms包:

代码语言:javascript
复制
hms::hms(0.257 * 60^2)  
#> 00:15:25.2

提供类hmsdifftime的对象。如果你想要一个字符串:

代码语言:javascript
复制
format(hms::hms(0.257 * 60^2))
#> [1] "00:15:25.2"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48301870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档