【问题标题】:Import date from excel to matlab从excel导入日期到matlab
【发布时间】:2014-03-13 15:01:54
【问题描述】:

当我使用“xlsread”命令将时间序列从 excel 导入到 matlab 时,我遇到了日期问题。例如,在我的 excel 电子表格中,截至 09.12.13 09:03(2013 年 12 月 9 日)的日期/时间转换为等于 41617.37708333330 的数字。当我将它导入 matlab 时,在序列日期编号类型中它保持不变 41617.37708333330 但是当我将它转换为日期字符串或日期向量类型(使用命令 detester 或分别使用 datevec)时,它会在

10-Dec-0113 09:03:00 或 [113 12 10 9 3 0]

即后一天(10 而非 9)和另一年(0113 而不是 2013)。

有人知道为什么会这样以及如何解决吗?

提前感谢您的帮助。

约翰

【问题讨论】:

标签: excel matlab datetime


【解决方案1】:

Matlab 使用日期到数字的约定,其中 1-jan-0000 为 1,而 excel 使用约定,其中 1-jan-1900 为 1。因此,当您以数字形式读取 excel 日期时,您必须将其从一种约定转换为另一种约定。

如果 numDate 是从 excel 中读取的值,并且您想将字符串设为 txtDate,请尝试

txtDate=datestr(numDate+datenum('1-jan-1900')-1)

【讨论】:

  • 警告:Excel 使用 1900 年 1 月 1 日和 1904 年 1 月 2 日作为其基准年,并且可以基于每个工作簿进行设置。工作簿中的Date1904 属性将表明这一点。请参阅丹尼尔评论中的链接。此外,如果您有 Financial Toolbox,则有一个 x2mdate 函数将为您进行转换。并且为了效率起见,不要将datenum('1-jan-1900') 放在转换表达式中,您应该执行一次并将其存储在一个持久变量中,以便在遇到的每个 Excel 日期中重复使用; datenum() 调用很昂贵,可能会损害大量导入。
猜你喜欢
  • 2020-05-09
  • 1970-01-01
  • 2015-04-03
  • 2014-01-05
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多