【问题标题】:Matlab and excel timestamp with datenumMatlab和excel时间戳与datenum
【发布时间】:2014-08-25 19:22:45
【问题描述】:

目前我正在使用 xlsread 打开一组我在 excel 中具有给定时间戳的数据。但是当这些值放在 matlab 中时,它会改变时间戳的格式。 在excel中是: dd/mm/yyyy HH:MM

但是当它把它放入matlab时它会改变它

mm/dd/yyyy HH:MM

这破坏了我的其他代码。我已经尝试使用 formatIn 并指定它,但是如果没有给出午夜的值,它会返回一个错误。

任何帮助将不胜感激。

【问题讨论】:

  • 你用什么代码? Matlab 中的时间戳是什么格式的?字符串元胞数组?
  • 是的,是一个字符串元胞数组。

标签: matlab timestamp


【解决方案1】:

您可以使用datenumdatestr 将格式转换为您想要的格式。在以下示例中,我假设您的时间戳包含在字符串元胞数组中,但如果它是 char 矩阵,它也可以工作:

>> timestamps = {'08/25/2014 13:14'; '08/26/2014 14:15'} %// mm/dd/yyyy HH:MM
>> result = datestr(datenum(timestamps, 'mm/dd/yyyy HH:MM'), 'dd/mm/yyyy HH:MM')
result =
25/08/2014 13:14
26/08/2014 14:15

【讨论】:

  • 如果您想强制执行标准日期格式,我会推荐这种方法。但是,如果 Excel 包含不寻常的日期格式并且是必需的,请考虑直接使用日期表示。
  • 这就是我最初拥有的,直接使用 datenum 指定格式,但是当没有给出 HH:MM 时它不喜欢它。 Matlab 将 00:00 作为午夜导入为空白,这只是默认设置。因此,它会抛出一个错误。不知道如何解决。
  • 如果没有给出值,它应该默认为 0,但我的代码没有这样做。 ://
  • 所以当我去 >> datenum('1/01/2011', 'mm/dd/yyyy HH:MM') 它会抛出一个错误,而不是像它应该的那样默认为零。跨度>
【解决方案2】:

Luis 推荐的内容应该可以帮助您获得您喜欢的任何格式。然而,这里有一些重要的事情需要意识到:

Excel 在您的格式中没有“日期”。它将日期存储为 123546.123 之类的数字,并以某种方式呈现给您。

如果您想完全按照 excel 显示的方式获取日期,诀窍是避免将相关列作为日期导入,而是将其作为文本导入。

如何做到这一点取决于你的导入方法,但应该不是很难。

【讨论】:

    猜你喜欢
    • 2017-11-17
    • 2017-10-27
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    相关资源
    最近更新 更多