我使用dtstr2dtnummx是因为这样更快,但是我遇到了一个问题,这个函数生成一个不同的日期,或者我的日期格式不正确
日期= {'2011-03-13 23:59:59.100'} out1 =datenum(日期) Out2=dtstr2dtnummx(日期,‘yyyy dd HH:MM:SS.SSS')
产出如下:
日期= “2011-03-13 23:59:59.100” out1 = 734575.999989583 out2 = 736281.960423495
我不知道错误在哪里
更新
我找到了一个答案,用下面的日期格式我得到了相同的结果
Dtstr2dtnummx(日期,'YYYY-MM-dd HH:mm:ss.SSS')
但是我不知道为什么会这样,因为我遵循了这教程,但是我得到了错误的输出,如果有人知道答案,请分享。
发布于 2011-05-04 11:35:11
datenum和dtstr2dtnummx使用不同的格式字符串:datenum调用cnv2icudf将"date format令牌转换为ICU日期格式令牌“(请参阅help cnv2icudf)用于dtstr2dtnummx。注意,这包括将大写和小写替换为MM (互换月份和分钟)。换句话说,您使用datenum的文档为dtstr2dtnummx创建了一个格式字符串,该字符串是无文档和私有的。
要获得要使用的正确格式字符串,可以调用
cnv2icudf('yyyy-mm-dd HH:MM:SS.FFF')结果是
安= yyyy MM-dd HH:mm:ss.SSS
这和你自己找到的解决方案很接近。
经验教训:dtstr2dtnummx是一个私有函数是有原因的--在您理解包装器datenum之前不要调用它;-)。
顺便问一句,出于好奇:你真的剖析了你的代码,发现datenum是罪魁祸首吗?
https://stackoverflow.com/questions/5880242
复制相似问题