r - 更改 POSIXct 对象中的时区

标签 r datetime

在 R 中使用日期时间和时区可能会很棘手。 这是我的问题:我想更改 POSIXct 对象上的时区

R) data <- data.frame(x=c(1,2),dateTime=as.POSIXct(c("2010-03-11 03:30:00.432","2010-03-15 03:30:00.432"),format="%Y-%m-%d %H:%M:%S",tz="America/Montreal"))
R) data
  x            dateTime
1 1 2010-03-11 03:30:00
2 2 2010-03-15 03:30:00
R) str(data)
'data.frame':   2 obs. of  2 variables:
 $ x       : num  1 2
 $ dateTime: POSIXct, format: "2010-03-11 03:30:00" "2010-03-15 03:30:00"

但是如果我想更改时区,我唯一发现的是:

R) data$dateTime2 = format(data$dateTime,tz="Europe/Paris")
R) str(data)
'data.frame':   2 obs. of  3 variables:
 $ x        : num  1 2
 $ dateTime : POSIXct, format: "2010-03-11 03:30:00" "2010-03-15 03:30:00"
 $ dateTime2: chr  "2010-03-11 09:30:00" "2010-03-15 08:30:00"

或者

R) data$dateTime2 = as.POSIXlt(data$dateTime,tz="Europe/Paris")
R) str(data)
'data.frame':   2 obs. of  3 variables:
 $ x        : num  1 2
 $ dateTime : POSIXct, format: "2010-03-11 03:30:00" "2010-03-15 03:30:00"
 $ dateTime2: POSIXlt, format: "2010-03-11 09:30:00" "2010-03-15 08:30:00"

上帝(或某个人)知道为什么它不能与 POSIXct 一起使用

R) data$dateTime2 = as.POSIXct(data$dateTime,tz="Europe/Paris")
R) str(data)
'data.frame':   2 obs. of  3 variables:
 $ x        : num  1 2
 $ dateTime : POSIXct, format: "2010-03-11 03:30:00" "2010-03-15 03:30:00"
 $ dateTime2: POSIXct, format: "2010-03-11 03:30:00" "2010-03-15 03:30:00"

我需要转换为字符并转换回POSIXct吗?

最佳答案

它不适用于 POSIXct,因为 base::as.POSIXct.default 仅返回 x(如果它已经是 POSIXct) 。您可以通过 tzone 属性更改时区:

attr(data$dateTime, "tzone") <- "Europe/Paris"

关于r - 更改 POSIXct 对象中的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14141537/

相关文章:

r - purrr 的 every 不能很好地与 is.na 配合使用

r - 数据子集中的自定义函数、基本函数、向量输出?

r - 当 output_dir 包含空格时,使用 Rmarkdown 生成 PDF 文档时出错

mysql - mysql中两个特定时间之间的数据出现错误

python - Pandas 日期时间聚合

R data.table 更改 R 名称

r - 树状图边缘(分支)颜色匹配尖端(叶)颜色(猿包)

mysql - 如何正确按月份对sql查询结果排序?

datetime - Modelica 打印当前时间

sql - 在 SQL Server 中添加时间戳到日期