R在日期前后加上时区
我在R中遇到一些日期操作问题。上面的时间戳是:R在日期前后加上时区,r,datetime,R,Datetime,我在R中遇到一些日期操作问题。上面的时间戳是: timestamp = 1491800340000 我想将其舍入到2017-04-09T00:00:00.000 GMT,因为我的每日聚合设置为00:00 GMT 我该怎么做? 以下是我尝试过的: 2017-04-10T04:59:00.000 GMT 2017-04-09T23:59:00.000 America/Bogota (Local time) 这是2017-04-09T05:00:00.000 GMT(不是我预期的午夜)。看来我没能
timestamp = 1491800340000
我想将其舍入到2017-04-09T00:00:00.000 GMT
,因为我的每日聚合设置为00:00 GMT
我该怎么做?
以下是我尝试过的:
2017-04-10T04:59:00.000 GMT
2017-04-09T23:59:00.000 America/Bogota (Local time)
这是2017-04-09T05:00:00.000 GMT
(不是我预期的午夜)。看来我没能指定某个地方的时区
我尝试了很多类似POSIXct的方法,但都没有成功。
任何提示都将不胜感激!
干杯
注:我不想安装任何软件包,这是一个小把戏:
> Sys.timezone()
[1] "America/Bogota"
> timestamp = 1491800340000
> date = strptime(timestamp / 1000, "%s");
[1] "2017-04-09 23:59:00 COT"
> midnightLocal = trunc(date, "day");
[1] "2017-04-09 COT"
> midnightUTC = strptime(format(midnightLocal, "%Y-%m-%d"), "%Y-%m-%d", tz = "UTC");
[1] "2017-04-09 UTC"
> truncatedtimestamp = as.integer(format(midnightUTC, "%s"));
[1] 1491714000
timestamp=1491800340000
tsattr(ts3b,“tzone”)
timestamp = 1491800340000
ts <- as.POSIXct(timestamp / 1000, origin = "1970-01-01 00:00:00 GMT")
ts2 <- as.Date(trunc(ts, "day"))
attr(ts2, "tzone") <- "GMT"
format(ts2, "%Y-%m-%d %H:%M:%S %Z") # to prove it's midnight
# [1] "2017-04-09 00:00:00 UTC"
class(ts2)
# [1] "Date"
ts3a <- as.numeric(ts2) * 60*60*24
ts3a
# [1] 1491696000
as.POSIXct(ts3a, origin = "1970-01-01 00:00:00 GMT", tz = "GMT")
# [1] "2017-04-09 GMT"
ts3b <- as.POSIXct(ts2)
attr(ts3b, "tzone") <- "GMT"
ts3b
# [1] "2017-04-09 GMT"