从 excel 文件中读取 datenum 而不是 datestr

reading datenum instead of datestr from excel file

我正在尝试从 excel sheet 读取测试 table ,我的 excel sheet 看起来像这样

 Building      location start_date  start_time  end_date    end_time    number
 Test_Building  1.08    12.06.2016  19:00       12.06.2016      19:30    7

现在,当我使用 :

在 matlab 中将其作为 table 阅读时
R = readtable('testtable.xlsx','ReadVariableNames',1) 

我得到了类似的东西

R = 

       Building        location     start_date     start_time      end_date      end_time    number
    _______________    ________    ____________    ____________    ____________    ________    ______

    'Test_Building'    1.08        '12.06.2016'    0.79167         '12.06.2016'    0.8125      7     

现在,如果您注意到 start_timeend_time 是以 datenum 格式而不是 datestr 格式检索的,那么当我检索这些时,我该如何节省时间呢? datestr 格式的变量 ?

这里要意识到的关键是,如果你在Excel中使用日期,它不会存储为字符串,而是存储为相应的datenum。特别是,打开同一个文件的两个人可能会根据他们的设置看到不同的字符串。

因此不存在'getting the date string from excel'。

有一些解决方法,例如将您的日期作为字符串存储在 excel 中(如您在评论中提到的那样)。然而,这并不总是可能的。

也许甚至可以加载字符串,因为 Excel 会根据您当前的设置显示它,但这当然不是很便携,如果您更改设置,您很容易遇到麻烦因为后面在Matlab中的计算将不再符合格式。更不用说您需要单独解析具有不同格式的日期列,即使它们在同一个文件中。

因此,我推荐以下内容:

读取 datenum,并在 MATLAB 中解析它

当然你可能想要一个日期,但即使你将它解析为一个字符串,这仍然是推荐的通用解决方案。

你在评论中提到你想使用 datevec,因此你应该能够使用这两个选项之一:

DateVector = datevec(DateNumber)

根据您的来源,您可能需要从数字中添加或减去一个常数以获得正确的日期。 (可能 Excel 不需要这个,但只需尝试一次。)