r - as.POSIXct 的时区不起作用

标签 r date posixct

我有一个带日期的数据框,我正在尝试将其转换为 POSIXct 对象,但我无法指定时区。知道为什么会这样吗?

> str(dates)
'data.frame':   3171 obs. of  3 variables:
$ Date     : Date, format: "2013-05-14" "2013-08-15" "2014-05-30" "2014-09-29" ...
$ BB_Ticker: Factor w/ 1252 levels "A US Equity",..: 1 2 2 2 2 2 2 2 2 2 ...
$ 1Y       : POSIXct, format: "2013-05-13 20:00:00" "2013-08-14 20:00:00" "2014-05-29 20:00:00" "2014-09-28 20:00:00" ..

我尝试指定 "America/New_York"以及 "EST5EDT"但它没有效果 -
> head(as.POSIXct(dates$Date, tz = "GMT"), 3)
[1] "2013-05-13 20:00:00 EDT" "2013-08-14 20:00:00 EDT" "2014-05-29 20:00:00 EDT"

> head(as.POSIXct(dates$Date, tz = "America/New_York"), 3)
[1] "2013-05-13 20:00:00 EDT" "2013-08-14 20:00:00 EDT" "2014-05-29 20:00:00 EDT"

> head(as.POSIXct(dates$Date, tz = "EST5EDT"), 3)
[1] "2013-05-13 20:00:00 EDT" "2013-08-14 20:00:00 EDT" "2014-05-29 20:00:00 EDT"

最佳答案

如果你看as.POSIXct.Date的源代码你看到这个:

function (x, ...) 
.POSIXct(unclass(x) * 86400)
<bytecode: 0x00000000120de6e0>
<environment: namespace:base>

请注意没有时区传递给 .POSIXct .

您可以改用字符方法:
as.POSIXct(as.character(as.Date("2013-05-14")), tz = "GMT")
[1] "2013-05-14 GMT"

关于r - as.POSIXct 的时区不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50373340/

相关文章:

r - 如何将summarise_each应用于除一列之外的所有列?

r - 每> n个字符替换子字符串(有条件地为空格插入换行符)

r - data.frames 列表到 xts 对象列表

mysql - sql条件作为日期和数据库日期格式是日期时间

r - 如何按组计算 data.frame 与前一行的时间差

r - 至少相差 30 分钟的子集观测值

r - 如何防止 write.csv 将 POSIXct、日期和时间类更改回字符/因子?

使用 R ggplot2 右对齐多个图的水平 y 轴标题

javascript - 按年份/日期对 json 进行排序 (JSON/nodeJS)

jsf - selectOneMenu 与日期使用不同的模式作为值和标签