我也尝试了以下内容:
datestr('19-01-2004','dd-mm-yyyy')
ans =
26-06-0024
我是MATLAB的新手,所以我不确定还有什么要检查。
答案 0 :(得分:7)
在函数datestr()
中,第二个参数表示输出的外观。它对输入没有任何说明。
基本上,您尝试执行两个步骤:解析字符串,然后再次格式化已解析的日期。
所以你可以做到
n = datenum('19-01-2004','dd-mm-yyyy')
datestr(n, 'yyyy-mm-dd')
您将获得n
的731965,最终输出为2004-01-19
。
您也可以
v = datevec('19-01-2004','dd-mm-yyyy')
datestr(v, 'yyyy-mm-dd')
,您的v
变为[2004 1 19 0 0 0]
。
请记住:第1步 - 使用适当的格式字符串解析输入,步骤2 - 使用所需格式字符串格式化输出。
如果你想在"清洁"和可读格式,你可以做到
v = [2004 1 19 0 0 0]
datestr(v, 'yyyy-mm-dd')
datestr(v, 'dd.mm.yyyy')
datestr(v, 'mm/dd/yyyy')
答案 1 :(得分:4)
使用datestr
将日期字符串从一种形式转换为另一种形式时,输入日期字符串的格式限制为listed here。输入'19-01-2004'
的格式为'dd-mm-yyyy'
,不是受支持的格式之一。
如果我们将输入字符串更改为'01/19/2004'
,这是支持的格式'mm/dd/yyyy'
,我们会得到正确的输出:
>> datestr('01/19/2004','dd-mm-yyyy')
ans =
19-01-2004
要绕过有限数量的受支持输入格式,请documentation recommends先使用datenum
。因此,您可以将原始输入映射到自身,如:
>> datestr(datenum('19-01-2004','dd-mm-yyyy'),'dd-mm-yyyy')
ans =
19-01-2004
至于为什么MATLAB返回它与处理未知格式的方式有关的日期。 我怀疑他们用什么方法最终决定格式会产生一个非常小的日期数,因此是24年的输出。