2

我必须从两个字符串中生成一个日期(字符串或数字),第一个是日期,第二个是时间。我的代码中一定有错误,因为结果与源数据的串联不同。

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

发生了什么?

4

2 回答 2

1

如果您执行了每个中间步骤,您会看到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
于 2013-05-12T06:42:47.683 回答
0

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
于 2013-05-12T06:41:31.210 回答