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

sac*_*cvf 3 matlab r

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

    Matlab:
   datestr(733038.6)
    ans =
    27-Dec-2006 14:24:00 
Run Code Online (Sandbox Code Playgroud)

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

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

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

bro*_*oll 7

技巧是Matlab使用虚拟参考日期的"01月01日0000"来计算其日期编号.R中"POSIXct"类的时间原点是'1970-01-01 00:00.00 UTC'.您可以在此处了解不同系统如何处理日期.

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

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

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