datenum
и dtstr2dtnummx
используют строки различного формата: datenum
вызовы cnv2icudf
для преобразования «токенов формата даты в токены формата даты ICU» (см. help cnv2icudf
), которые можно использовать с dtstr2dtnummx
.Обратите внимание, что это включает в себя смену прописных и строчных букв для ММ (чередуя месяц и минуты).Другими словами, вы использовали документацию для datenum
для создания строки формата для dtstr2dtnummx
, которая является недокументированной и частной.
Чтобы получить правильную строку формата для использования, вы можете вызвать
cnv2icudf('yyyy-mm-dd HH:MM:SS.FFF')
, в результате чего
ans =
гггг-мм-дд ЧЧ: мм: сс.ССС
, что довольно близко крешение, которое вы нашли сами.
Извлеченный урок: есть причина, по которой dtstr2dtnummx
является закрытой функцией - не вызывайте ее, пока не поймете оболочку datenum
; -).
Кстати, из любопытства: Вы действительно профилировали свой код и нашли datenum
главным виновником?