我正在从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"
或类似的东西
答案 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"