【发布时间】:2017-04-27 14:01:48
【问题描述】:
我正在尝试四舍五入(到当天)日期时间数据。数据如下所示:
> date[10:15]
[1] "2016-08-31 23:03:02 EDT" "2016-08-31 22:52:50 EDT"
[3] "2016-08-31 22:50:02 EDT" "2016-08-31 22:34:28 EDT"
[5] "2016-08-31 22:31:41 EDT" "2016-08-31 22:25:37 EDT"
问题是当我使用lubridate 函数round_date() 将日期“四舍五入”为仅年、月、日部分时,日期似乎已更改为 UTC(注意:UTC 约为 5 小时在 EDT 之前,所以 00:40:17 EDT 是 05:40:17 UTC,如果我理解正确的话):
> date_r
[1] "2016-09-01 EDT" "2016-09-01 EDT" "2016-09-01 EDT"
[4] "2016-09-01 EDT" "2016-09-01 EDT" "2016-09-01 EDT"
这是一个代表:
structure(c(1472698982, 1472698370, 1472698202, 1472697268, 1472697101,
1472696737), class = c("POSIXct", "POSIXt"), tzone = "America/Detroit")
date_r <- round_date(date, unit = "day")
如果日期在 EDT 中包含 8-31,我会尝试将四舍五入的日期设置为 8-31(而不是 9-1)。四舍五入时如何保留时区?开放给非Lubridate 的答案。
【问题讨论】:
-
format(d, "%Y-%m-%d") -
R 日期始终为 UTC。打印和格式化功能是本地化的。
-
@d.b 有效
-
@42- 谢谢,但这似乎并没有解决如何将它们四舍五入以供使用,例如,在时间序列图中,它们需要在哪里?
-
请尝试阅读以了解含义。如果您了解“四舍五入”到 Date 将在内部表示级别上完成,那么您的结果是有意义的,并且“格式”功能不会四舍五入而是“地板”。