我正在使用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教程,但是得到了错误的输出,如果有人知道答案,请分享。
答案 0 :(得分:4)
datenum
和dtstr2dtnummx
使用不同的格式字符串: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
; - )之前不要调用它。
datenum
是一个主要罪魁祸首?