gpt4 book ai didi

r - 执行数学运算后在时钟时间内显示时间

转载 作者:行者123 更新时间:2023-12-04 12:17:41 25 4
gpt4 key购买 nike

我从 创建了一个时间序列00:00:00 小时 23:00:00 小时 .添加任意小时数很容易,直到总和小于或等于 23:00:00 小时。总和超过 23:00:00 后,它开始以天数显示时间,这是非常直观的。但我希望在时钟时间内输出,无论我是做减法还是加法

假设我想做如下加法

library(chron)
times("23:00:00")+ times("01:00:00")
Time in days:
[1] 1

我想要的输出是 低于一个。而不是得到我想要的日子
00:00:00 

我也试过减法
times("00:00:00")- times("01:00:00")
[1] -0.04166667

所需输出
 "23:00:00"

我也用 试过了POSIXct 但它在各种情况下都会出现各种错误
 as.POSIXct("00:00:00", format = "%H:%M:%S", tz = "UTC")
[1] "2017-02-07 UTC" #Not printing time. Only dates

使用 POSIXct 减法
as.POSIXct("00:00:00", format = "%H:%M:%S", tz = "UTC") -as.POSIXct("01:00:00", format = "%H:%M:%S", tz = "UTC")
Time difference of -1 hours
Warning message:
In 1:0:0 : numerical expression has 2 elements: only the first used

使用 POSIXct 进行加法
as.POSIXct("23:00:00", format = "%H:%M:%S", tz = "UTC") + as.POSIXct("01:00:00", format = "%H:%M:%S", tz = "UTC")
Error in `+.POSIXt`(as.POSIXct("23:00:00", format = "%H:%M:%S", tz = "UTC"), :
binary '+' is not defined for "POSIXt" objects

请帮我解决这个问题。还请帮助我在上面显示的 POSIXct 中打印时间和日期 如果有什么对您没有意义,请告诉我,而不是对我的问题投反对票。

最佳答案

请注意 timeschron包在内部将时间表示为数值(十进制天)。您要做的是保留小数点后的值并删除小数点之前的整数。这可以通过将模数取 1 来实现(尝试 2.5 %% 1)。所以,你可以通过 times(1) 取模数这将摆脱这一天。

library(chron)
(times("23:00:00")+ times("01:00:00")) %% times(1)
#[1] 00:00:00
> (times("00:00:00") - times("01:00:00")) %% times(1)
#[1] 23:00:00

使用 POSIXct

我不想使用 POSIXct为此,自 POSIXct由于日期和时区而使事情复杂化。内部, POSIXct是来自某个来源(通常是 1970-01-01)的秒数值。所以,如果你想给 POSIXct 添加一个时间间隔对象,只需添加该时间间隔(以秒为单位)。

要将 1 小时添加到“23:00:00”,您可以执行
format(as.POSIXct(
as.numeric(as.POSIXct("23:00:00", format = "%H:%M:%S", tz = "UTC")) + 3600,
origin = "1970-01-01", tz = "UTC"), "%H:%M:%S")
#[1] "00:00:00"

减法可以以同样的方式工作
format(as.POSIXct(
as.numeric(as.POSIXct("24:00:00", format = "%H:%M:%S", tz = "UTC")) - 3600,
origin = "1970-01-01", tz = "UTC"), "%H:%M:%S")
#[1] "23:00:00"

关于r - 执行数学运算后在时钟时间内显示时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42090895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com