【问题标题】:How to extract the time using R from a MATLAB serial date number?如何使用 R 从 MATLAB 序列号中提取时间?
【发布时间】:2015-05-06 08:59:20
【问题描述】:

我有一些需要在 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"

它只给出日期,但我还需要时间?任何想法

【问题讨论】:

标签: r matlab


【解决方案1】:

诀窍是 Matlab 使用“January 01, 0000”,一个虚构的参考日期来计算它的日期编号。 R 中“POSIXct”类的时间起源是“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”,86400 是标准 UTC 日的秒数。

【讨论】:

    猜你喜欢
    • 2015-05-25
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 2019-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多