如何获取日期类和POSIXCt给出相同的结果

时间:2015-04-22 01:10:31

标签: excel date posixct

我正在从excel读取一些数字版本的日期。 Excel将42094显示为3/31/15(或某些变体,具体取决于日期的结构。 as.Date(42094,origin =" 1899-12-30")产生" 2015-03-31"。原产地的选择与微软对闰年的误解有关。 这两行代码

    temp <- as.Date(42094,origin = "1899-12-30")
    as.POSIXct(temp, origin = "1899-12-30")

产生

  

&#34; 1899-12-30 04:41:34 MST&#34;

使用         as.POSIXct(temp,origin =&#34; 1900-1-1&#34;) 结果是         &#34; 2015-03-30 18:00:00 MDT&#34;

现在我想要的是

"2015-03-31 MDT"

或类似的东西

1 个答案:

答案 0 :(得分:0)

我的问题的部分解决方案是这行代码。         origin = as.POSIXct(&#34; 1970-01-01&#34;,tz =&#34; America / Denver&#34;) 通过使用原点的通常方式(origin =&#34; 1970-01-01&#34;),假设GMT;此代码将其更改为本地时区。

来自#pnuts的代码将微软1900年(42094)的天数转换为2015-3-31至1970-1-1(25569)的R原点。然后它将天数转换为秒(86400),然后将我的小时数B1转换为秒。所以这里有几行代码可以满足我对数据日期部分的要求。

    temp <- (42094-25569)*86400
    as.POSIXct(temp, origin=as.POSIXct("1970-01-01", tz="America/Denver"))

结果是

    "2015-03-31 01:00:00 MDT"