2

2 つの文字列から 1 つの日付 (文字列または数値) を生成する必要があります。1 つ目は日付で、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 に答える