Excel日期时间转换为POSXIct

时间:2019-04-17 17:20:16

标签: r datetime

我正在将Excel中的日期时间列读入R中,但是当转换为POSXIct并使用原点1970-01-01时,仅转换为1970年的日期时间。与lubridate包相同,使用原点作为lubridate = orgin 。关于如何解决这个问题有什么想法吗?

xlsx软件包可以正常工作,但是由于某种原因,openxlsx不能正常工作。

test2     <- read.xlsx (FN, sheet = 3, startRow = 35, cols = 1:77)
 test2$dt  <- as.POSIXct(test2$DateTime, origin="1970-01-01")

DateTime从excel中读取为数字和43306.29 转换为POSXIct格式后应为7-25-2018 7:00:00,但应为1970-01-01 05:01:46

1 个答案:

答案 0 :(得分:1)

这里需要了解两个时间系统之间的主要区别。
在Excel中43306.29表示从1900年1月1日(第1天)起的43306天,而0.29是一天的分数(此处约为7小时)。
R使用Unix时间保持标准,因此它跟踪从1970年1月1日(Unix程序员开始的时间)开始的秒数。
因此,为了从Excel转换为R,您需要隐瞒从原点到秒数的天数(60秒* 60分钟* 24小时)。

as.POSIXct(43306.29*3600*24 , origin="1899-12-30")
#"2018-07-25 02:57:36 EDT"

as.POSIXct(43306.29*3600*24 , origin="1899-12-30", tz="UTC")
#"2018-07-25 06:57:36 UTC"

注意:Windows和Excel假定在1900年是a年,所以so年需要更正为1899年12月30日。