Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R在日期前后加上时区_R_Datetime - Fatal编程技术网

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(不是我预期的午夜)。看来我没能

我在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
(不是我预期的午夜)。看来我没能指定某个地方的时区

我尝试了很多类似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
ts
attr(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"