任何人都可以告诉我为什么R会给出以下结果:
> as.POSIXct("2013-01-01 08:00")
[1] "2013-01-01 08:00:00 HKT"
> as.Date(as.POSIXct("2013-01-01 08:00"))
[1] "2013-01-01"
> as.POSIXct("2013-01-01 07:00")
[1] "2013-01-01 07:00:00 HKT"
> as.Date(as.POSIXct("2013-01-01 07:00"))
[1] "2012-12-31"
Run Code Online (Sandbox Code Playgroud)
不应该2013-01-01
在转换POSIXct
为Date
for之后2013-01-01 07:00
,有没有办法将截止值08:00
改为00:00
?
我发现以下内容可以解决我的问题,但是不太整齐
> as.Date(as.character(as.POSIXct("2013-01-01 07:00")))
[1] "2013-01-01"
Run Code Online (Sandbox Code Playgroud)
ale*_*han 35
这里的问题是时区 - 你可以看到你在"HKT"
.尝试:
as.Date(as.POSIXct("2013-01-01 07:00", 'GMT'))
[1] "2013-01-01"
Run Code Online (Sandbox Code Playgroud)
来自?as.Date()
:
["
POSIXct
"]通过忽略指定时区(默认UTC)中时间表示中午夜之后的时间转换为天数
Rol*_*and 23
使用时区参数as.Date
:
as.Date(as.POSIXct("2013-01-01 07:00",tz="Hongkong"))
#[1] "2012-12-31"
as.Date(as.POSIXct("2013-01-01 07:00",tz="Hongkong"),tz="Hongkong")
#[1] "2013-01-01"
Run Code Online (Sandbox Code Playgroud)
实际上,我建议tz
在使用日期时转换功能时始终使用该参数.还有其他令人讨厌的惊喜,例如夏令时.