如何使用MAT从MATLAB序列日期编号中提取时间?

时间:2015-05-06 08:59:21

标签: r matlab

我有一些我需要在R中使用的MATLAB序列号,但是我要将它们转换为正常日期。

    Matlab:
   datestr(733038.6)
    ans =
    27-Dec-2006 14:24:00 

你可以看到它给出日期和时间。

Now we try in R:
Matlab2Rdate <- function(val) as.Date(val - 1, origin = '0000-01-01') 
> Matlab2Rdate(733038.6)
[1] "2006-12-27"

它只提供日期但我还需要时间吗?任何想法

1 个答案:

答案 0 :(得分:7)

技巧是Matlab使用&#34; 1月01日,0000&#34;,一个虚构的参考日期,来计算其日期编号。 &#34; POSIXct&#34;的时间起源R中的类是'1970-01-01 00:00.00 UTC'。您可以阅读有关不同系统如何处理日期here的信息。

在转换之前,您需要考虑从一种格式到另一种格式的参考差异。 POSIX手册包含这样的示例。这是我的输出:

> val<-733038.6
> as.POSIXct((val - 719529)*86400, origin = "1970-01-01", tz = "UTC")
[1] "2006-12-27 14:23:59 UTC"

其中719529在Matlab的datenum中是'1970-01-01 00:00.00 UTC',在标准UTC日是86400的秒数。