R 与.POSIXct一样,时区部分被忽略
这是我的例子R 与.POSIXct一样,时区部分被忽略,r,posixct,R,Posixct,这是我的例子 test <- as.POSIXct(as.Date("2019-11-01"), tz = "UTC") test 它看起来好像被忽略了tz参数: attr(test, "tzone") 返回NULL 为什么是19小时而不是00小时?我怎样才能在00小时内到达UTC 更新 下面是更好的例子: test_2 <- as.POSIXct("2019-11-01 00:00:00", tz = "UTC") str(test_2) attr(test_2, "tzone
test <- as.POSIXct(as.Date("2019-11-01"), tz = "UTC")
test
它看起来好像被忽略了tz
参数:
attr(test, "tzone")
返回NULL
为什么是19小时而不是00小时?我怎样才能在00小时内到达UTC
更新
下面是更好的例子:
test_2 <- as.POSIXct("2019-11-01 00:00:00", tz = "UTC")
str(test_2)
attr(test_2, "tzone")
strftime(test_2, "%H")
现在看来参数
tz
没有被忽略,但小时是19,但为什么呢?我们可以使用和中的
润滑
library(lubridate)
test1 <- with_tz(as.Date("2019-11-01"), tzone = 'UTC')
attr(test1, 'tzone')
#[1] "UTC"
使用
strftime
,使用tz
strftime(test2, "%H", tz = 'UTC')
#[1] "00"
如果我们检查strftime
,它将使用as.POSIXlt
进行第二次转换,然后使用format
获取格式化输出
strftime
function (x, format = "", tz = "", usetz = FALSE, ...)
format(as.POSIXlt(x, tz = tz), format = format, usetz = usetz,
...)
根据?as.POSIXlt
tz-用于转换的时区规范(如果需要)。特定于系统(请参见时区),但“”是当前时区,“GMT”是UTC(世界时,协调)。无效值通常被视为UTC,在某些平台上会出现警告
默认情况下,”
使用Sys.timezone
as.POSIXlt(test2, tz = Sys.timezone())$hour
#[1] 20
@user1700890我得到
hour(test2)#[1]0
@user1700890对我来说,它返回20。根据文档,当我们不提供tz
时,它使用“
,然后使用您的当前时区system@user1700890您可以使用as.POSIXlt(test2,tz=Sys.timezone())$hour
@user1700890进行检查。我将使用lubridate`中的hour
,或者您可以直接使用格式(test2,“%H”进行检查)
@user1700890如果unclass(test2)
将从POSIXlt
strftime(test2, "%H", tz = 'UTC')
#[1] "00"
strftime
function (x, format = "", tz = "", usetz = FALSE, ...)
format(as.POSIXlt(x, tz = tz), format = format, usetz = usetz,
...)
as.POSIXlt(test2)$hour
#[1] 0
as.POSIXlt(test2, tz = "")$hour
#[1] 20
as.POSIXlt(test2, tz = Sys.timezone())$hour
#[1] 20