gpt4 book ai didi

r - POSIXct 到数字使用不同的时区

转载 作者:行者123 更新时间:2023-12-04 11:24:06 27 4
gpt4 key购买 nike

我想我一定不明白 POSIXct 是如何工作的,或者什么的。据我了解,这是自纪元以来的几秒钟,纪元是标准时间,例如格林威治标准时间 1970-01-01。

我在 PST 中的 EST 中取了两个 POSIXct 乘以一个,它们是相同的绝对时间。然而,当我将它们转换为数值时,结果是不同的......有人能指出我做错了什么吗?

> pst = as.POSIXct('2011-01-10 06:45:00', tz = 'PST')
> est = as.POSIXct('2011-01-10 09:45:00', tz = 'EST')
> as.numeric(pst)
[1] 1294641900
> as.numeric(est)
[1] 1294670700

这是我的 session 信息:
> sessionInfo()
R version 2.13.0 (2011-04-13)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 LC_MONETARY=C LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=C\
LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] grid stats graphics grDevices utils datasets methods base

other attached packages:
[1] RSQLite_0.9-4 snow_0.3-8 RMySQL_0.8-0 DBI_0.2-5 gtools_2.6.2 reshape2_1.1 ggplot2_0.8.9 proto_0.3-9.2 reshape_0.8.4 fTrading_2100.76 fBasics_\
2110.79 MASS_7.3-12
[13] timeSeries_2130.92 timeDate_2131.00 plyr_1.7.1

loaded via a namespace (and not attached):
[1] stringr_0.4 tools_2.13.0

最佳答案

时区名称并不像您想要的那么简单。见 http://en.wikipedia.org/wiki/Tz_database用于背景和 http://en.wikipedia.org/wiki/List_of_tz_database_time_zones获取所用名称的列表。到目前为止,最好的方法是使用 tz = 'country / city'表示法并显式设置本地系统的时区。

因此,这是一个使用两种不同方法对时区进行编码的脚本:

Sys.setenv(TZ='GMT')
pst.abr <- as.POSIXct('2011-01-10 06:45:00', tz = 'PST')
est.abr <- as.POSIXct('2011-01-10 09:45:00', tz = 'EST')
pst.country.city <- as.POSIXct('2011-01-10 06:45:00', tz = 'America/Los_Angeles')
est.country.city <- as.POSIXct('2011-01-10 09:45:00', tz = 'America/New_York')

如果我们查看我们希望成为 PST 的 POSIXct 值,我们会发现它们实际上有两个不同的值。从缩写 ( tz ='PST' ) 开始,您会得到:
> pst.abr
[1] "2011-01-10 06:45:00 UTC"
> as.numeric(pst.abr)
[1] 1294641900

您会看到我们使用 tz='PST' 定义的数据实际上不在 PST 时区,而是继承了系统的时区。

将此与我们使用 country\city 定义的数据进行比较:
> as.numeric(pst.country.city)
[1] 1294670700
> pst.country.city
[1] "2011-01-10 06:45:00 PST"

因此,只有我们使用国家/城市信息明确编码的数据才具有正确的时区信息。

关于r - POSIXct 到数字使用不同的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18156015/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com