我有一些我需要在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)
它只提供日期,但我还需要时间吗?任何的想法
技巧是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秒.