R 将数字转换为日期&;使用openxlsx从xlsx文件读取日期后的时间

R 将数字转换为日期&;使用openxlsx从xlsx文件读取日期后的时间,r,date,time,numeric,R,Date,Time,Numeric,当我尝试使用openxlsx从xlsx文件读取日期时,遇到了一个问题。我已经尝试过xlsx和xlconnect软件包,但它们都在我的计算机上与Java有一些问题,所以我使用openxlsx 我的日期数据如下: 1/01/2015 0:30 1/01/2015 1:00 1/01/2015 1:30 1/01/2015 2:00 1/01/2015 2:30 1/01/2015 3:00 1/01/2015 3:30 1/01/2015 4:00 1/01/2015 4:30 1/01/2015

当我尝试使用openxlsx从xlsx文件读取日期时,遇到了一个问题。我已经尝试过xlsx和xlconnect软件包,但它们都在我的计算机上与Java有一些问题,所以我使用openxlsx

我的日期数据如下:

1/01/2015 0:30
1/01/2015 1:00
1/01/2015 1:30
1/01/2015 2:00
1/01/2015 2:30
1/01/2015 3:00
1/01/2015 3:30
1/01/2015 4:00
1/01/2015 4:30
1/01/2015 5:00
我使用以下代码读取数据:

a <- read.xlsx(paste0(myPath,"try/",myFileNameList[i]),startRow = 2,sheet = 1)
这个类是数值型的。因此,这些数字应与上述日期相对应。如何将数字数据转换回日期和时间

数据样本为:

a <- c(42005.02083,42005.04167,42005.06250,42005.08333,42005.10417,42005.12500,42005.14583,42005.16667,42005.18750,42005.20833)

a它们是自1899-12-30年以来的天数和小数天:

as.POSIXct("1899-12-30") + as.difftime(a, units="days")
# [1] "2015-01-01 00:29:59 AEST" "2015-01-01 01:00:00 AEST" "2015-01-01 01:30:00 AEST"
# [4] "2015-01-01 01:59:59 AEST" "2015-01-01 02:30:00 AEST" "2015-01-01 03:00:00 AEST"
# [7] "2015-01-01 03:29:59 AEST" "2015-01-01 04:00:00 AEST" "2015-01-01 04:30:00 AEST"
#[10] "2015-01-01 04:59:59 AEST"

获取预期结果(默认情况下为本地时区),但在保存和重新加载时与精度损失相关的一些非常小的舍入误差除外。

自1899-12-30以来,它们是天和小数天:

as.POSIXct("1899-12-30") + as.difftime(a, units="days")
# [1] "2015-01-01 00:29:59 AEST" "2015-01-01 01:00:00 AEST" "2015-01-01 01:30:00 AEST"
# [4] "2015-01-01 01:59:59 AEST" "2015-01-01 02:30:00 AEST" "2015-01-01 03:00:00 AEST"
# [7] "2015-01-01 03:29:59 AEST" "2015-01-01 04:00:00 AEST" "2015-01-01 04:30:00 AEST"
#[10] "2015-01-01 04:59:59 AEST"

获取预期结果(默认情况下为本地时区),但在保存和重新加载时会出现一些与精度损失相关的非常小的舍入错误。

非常感谢!但我无法复制你的答案。我在墨尔本。我的数据涉及悉尼、墨尔本和所有澳大利亚州。当我运行时:as.POSIXct(a,origin=“1899-12-30”,tz=“澳大利亚/布里斯班”)+as.difftime(a,units=“天”)。结果如下:[1]“2015-01-01 22:10:04 AEST”“2015-01-01 22:40:05 AEST”“2015-01-01 23:10:05 AEST”。。。当我使用像“澳大利亚/墨尔本”这样的其他TZ时,我得到了不同的结果。你能给我解释一下吗?谢谢。@FengChen-因为你没有使用我写的代码:
as.POSIXct(a,origin=“1899-12-30”)
as.POSIXct(“1899-12-30”)
根本不是一回事。明白了吗。谢谢!谢谢!但我无法复制你的答案。我在墨尔本。我的数据涉及悉尼、墨尔本和所有澳大利亚州。当我运行时:as.POSIXct(a,origin=“1899-12-30”,tz=“澳大利亚/布里斯班”)+as.difftime(a,units=“天”)。结果如下:[1]“2015-01-01 22:10:04 AEST”“2015-01-01 22:40:05 AEST”“2015-01-01 23:10:05 AEST”。。。当我使用像“澳大利亚/墨尔本”这样的其他TZ时,我得到了不同的结果。你能给我解释一下吗?谢谢。@FengChen-因为你没有使用我写的代码:
as.POSIXct(a,origin=“1899-12-30”)
as.POSIXct(“1899-12-30”)
根本不是一回事。明白了吗。谢谢!