我必须从两个字符串中生成一个日期(字符串或数字),第一个是日期,第二个是时间。我的代码中一定有错误,因为结果与源数据的串联不同。
DIR4{h} = datestr(strcat(DIR1{h},' ',DIR2{h}),'dd/mm/yyyy HH:MM:SS');
但:
DIR1{1} = 26/06/1998
DIR2{1} = 15:00:00
DIR4{1} = 17/03/0049 15:00:00
发生了什么?
我必须从两个字符串中生成一个日期(字符串或数字),第一个是日期,第二个是时间。我的代码中一定有错误,因为结果与源数据的串联不同。
DIR4{h} = datestr(strcat(DIR1{h},' ',DIR2{h}),'dd/mm/yyyy HH:MM:SS');
但:
DIR1{1} = 26/06/1998
DIR2{1} = 15:00:00
DIR4{1} = 17/03/0049 15:00:00
发生了什么?
如果您执行了每个中间步骤,您会看到strcat
忽略尾随空格(如文档所述):
strcat('26/06/1998',' ','15:00:00')
> 26/06/199815:00:00
修复相当简单:不要使用strcat
,而是使用普通矩阵连接:
strSrcDate = ['26/06/1998',' ','15:00:00']
接下来,您使用了错误的日期转换功能。datestr
是转换为一个字符串,而不是从。好的好的,它可以处理字符串输入,但是这很受限制。您将要使用datenum:
这给出了一个日期序列(阅读文档!),它是一个代表日期的数字(没有任何歧义)。将该数字用于日期的内部存储,当您想将该日期打印到屏幕或文件时,请使用以下命令将其转换为字符串datestr
:
numSrcDate = datenum(strSrcDate,'dd/mm/yyyy HH:MM:SS')
> 729932.625
datestr(numSrcDate,'dd/mm/yyyy HH:MM:SS'); % or any other format
datestr(numSrcDate,'dd/mm/yy HH:MM');
> 26/06/1998 15:00:00
> 26/06/98 15:00
datestr 的输入必须是向量。
date(1,:)=[1998 6 26 15 0 0];
Sdate{1}=datestr(date,'dd/mm/yyyy HH:MM:SS');
Sdate =
26/06/1998 15:00:00