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

时间:2017-03-17 01:16:09

标签: 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 5:00

我使用以下代码来读取数据:

a <- read.xlsx(paste0(myPath,"try/",myFileNameList[i]),startRow = 2,sheet = 1)

然后,我将数据保存为csv文件。在此csv文件中,日期如下所示:

42005.02083
42005.04167
42005.0625
42005.08333
42005.10417
42005.125
42005.14583
42005.16667
42005.1875
42005.20833

该类是数字。因此,这些数字应与上面的日期相对应。如何将数字数据转换回日期和时间?

数据样本是:

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

1 个答案:

答案 0 :(得分:3)

它们是自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"

获取预期结果(默认情况下在本地时区),除了与保存和重新加载时丢失准确性相关的一些非常小的舍入错误。