将 POSIX 日期和时间 (posixct) 舍入为相对于时区的日期

标签 r date rounding posixct

我想相对于特定时区将 POSIXct 舍入到当天。

如果我尝试

round(as.POSIXct("2013-03-05 23:00:00 EST"), "day")

它返回
2013-03-06

这是有道理的,因为当它是 23:00:00 EST 2013-03-05 在 EST5EDT 时,它已经是 2013-03-06 在 UTC。从逻辑上讲,我想做的是:
round(as.POSIXct("2013-03-05 23:00:00 EST"), "day", tz="EST5EDT")

也就是说,“将此日期和时间四舍五入到最近的一天,相对于 EST5EDT 时区”。不幸的是,round 不接受时区参数。

最佳答案

round一旦过了中午,就会舍入到第二天,这就是为什么我认为您看到的是 2013-03-06。我还必须明确设置 tzas.POSIXct 的调用中的参数

观察:

round( as.POSIXct("2013-03-05 11:00:00" , tz = "EST" ), "day" )
[1] "2013-03-05 EST"

然后一旦过了中午:
round( as.POSIXct("2013-03-05 12:00:00" , tz = "EST" ), "day" )
[1] "2013-03-06 EST"

调用 format将日期提取为不带 tz 参数的字符串。所以你可以在没有时区的情况下获得原始结果
format( round( as.POSIXct("2013-03-05 12:00:00" , tz = "EST" ), "day" ) )
[1] "2013-03-06"

如果您想将那天的任何时间舍入到那天,也许您想要的是 trunc ?
format(trunc( as.POSIXct("2013-03-05 12:00:00" , tz = "EST" ), "day" ))
[1] "2013-03-05"

关于将 POSIX 日期和时间 (posixct) 舍入为相对于时区的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16041093/

相关文章:

r - 计算给定数据框中连续不大于阈值但分组的数量

r - 带有 tcl tk 和 R 的不可编辑框

r - ggplotly 无法显示 geom_line

excel - excel中的圆函数。如何四舍五入到特定数字?

r - 如何拆分没有定义分隔符的数据框列

java - 如何获得当天到目前为止的总分钟数?

mysql - SQL 查询附加日期(月/日)值为零

android - 日期更改为过去日期时未收到日期更改的广播接收器

floating-point - 使用 RapidJSON 舍入 double 类型

php - 将价格四舍五入到最接近的 $xx.99