POSIXct时区在R中如何工作

POSIXct时区在R中如何工作,r,timezone,posixct,R,Timezone,Posixct,我有一组标准的unix整数时间戳,全部以UTC(GMT)为单位,输入到我希望绘制的R中。我一直在使用表单的代码: d$date\u timeR的日期和时间类功能非常强大,但需要一些时间才能习惯。TZ调整尤其棘手,但它们与字符的构造和转换有关 考虑以下示例,该示例将自身限制为数字输入。我们有很好的控制: R> tt <- as.POSIXct(0, origin="1970-01-01") R> str(tt) POSIXct[1:1], format: "1970-01-01

我有一组标准的unix整数时间戳,全部以UTC(GMT)为单位,输入到我希望绘制的R中。我一直在使用表单的代码:


d$date\u timeR的日期和时间类功能非常强大,但需要一些时间才能习惯。TZ调整尤其棘手,但它们与字符的构造和转换有关

考虑以下示例,该示例将自身限制为数字输入。我们有很好的控制:

R> tt <- as.POSIXct(0, origin="1970-01-01")
R> str(tt)
 POSIXct[1:1], format: "1970-01-01"
R> tt
[1] "1970-01-01 CST"
R> 
R> tt <- as.POSIXct(600, origin="1970-01-01")
R> tt
[1] "1970-01-01 00:10:00 CST"
R> 
tt <- as.POSIXct(600, origin="1970-01-01", tz="UTC")
R> tt
[1] "1970-01-01 00:10:00 UTC"
R> 
R> as.numeric(tt)
[1] 600
R> 
您可以使用
attributes()
检查TZ是否已设置:

R> attributes(tt)
$tzone
[1] "UTC"

$class
[1] "POSIXct" "POSIXt" 

R> 

因此,如果您在创建和转换时非常小心,您确实可以拥有一个完整的工具包,其中包含基于UTC的时间数据。

AFAIK,数据始终存储在世界时,并在打印时以本地时间显示。我将尝试挖掘一个相关的问题。因此,关于原始问题中的
2.
,假设所有内容都在UTC内部保存,请执行
xyplot()
等绘图功能,通常以UTC进行绘图,或对本地时区进行调整(例如,在我所在的位置,如果它进行调整,则所有时间戳将在视觉上移动+10小时)?您必须对此进行测试。请注意,您也可以通过
Sys.setenv()
覆盖R会话的(默认和系统)时区值。也就是说,您也可以通过转到as.numeric(timevariable)强制x轴值并密谋反对。
R> attributes(tt)
$tzone
[1] "UTC"

$class
[1] "POSIXct" "POSIXt" 

R>