Matlab datenum生成

时间:2011-05-04 07:49:42

标签: matlab date

我正在使用dtstr2dtnummx,因为它更快,但我遇到了一个问题,这个函数生成了一个不同的datenum,或者我的日期格式可能不正确

  

date = {'2011-03-13 23:59:59.100'}

     

out1 = datenum(日期)

     

out2 = dtstr2dtnummx(日期,'yyyy-mm-dd HH:MM:SS.SSS')

,输出结果为:

  

date =

'2011-03-13 23:59:59.100'
     

out1 =

      734575.999989583
     

out2 =

      736281.960423495

我不知道错误在哪里

更新

我找到了答案,使用以下日期格式我得到了相同的结果

  

dtstr2dtnummx(日期,'YYYY-MM-DD   HH:MM:SS.SSS')

但是我不知道为什么会这样,因为我跟着this教程,但是得到了错误的输出,如果有人知道答案,请分享。

1 个答案:

答案 0 :(得分:4)

datenumdtstr2dtnummx使用不同的格式字符串:datenum调用cnv2icudf将“日期格式标记转换为ICU日期格式标记”(请参阅​​help cnv2icudf)可与dtstr2dtnummx一起使用。请注意,这包括交换MM的大写和小写(交换月份和分钟)。换句话说,您使用datenum的文档为dtstr2dtnummx创建了一个格式字符串,该字符串未记录且是私有的。

要获取正确的格式字符串,可以调用

cnv2icudf('yyyy-mm-dd HH:MM:SS.FFF')

导致

  

ans =

      yyyy-MM-dd HH:mm:ss.SSS

这与您自己找到的解决方案非常接近。

获得的经验:dtstr2dtnummx是一个私有函数是有原因的 - 在理解包装器datenum; - )之前不要调用它。

BTW,出于好奇:您是否真的对您的代码进行了分析,发现datenum是一个主要罪魁祸首?