Currently I have the string:
2017-03-18 03:26:42.000000
I want to convert this to a date, and I use the following function:
datetime(my_string,'InputFormat','yyyy-mm-dd HH:MM:SS')
However, when I do this I get the following error:
Unable to parse '2017-03-18 03:26:42.000000' as a date/time using the format 'yyyy-mm-dd HH:MM:SS'.
I have also tried
datetime(my_string,'InputFormat','yyyy-mm-dd HH:MM:SSSSSSSSS')
and
datetime(my_string,'InputFormat','yyyy-mm-dd HH:MM:SS.SSSSSSS')
But none of these seem to work. How would I go about doing this?

 採用された回答

Guillaume
Guillaume 2017 年 7 月 17 日
編集済み: Guillaume 2017 年 7 月 17 日

4 投票

Carefully read the documentation of the Format property. The month identifier is uppercase M and the minute identifier is lowercase m. The seconds field is lowercase s with the fractional part as uppercase S. So:
datetime(my_string,'InputFormat','yyyy-MM-dd HH:mm:ss.S')
if you want to display the fractional seconds by default:
datetime(my_string,'InputFormat','yyyy-MM-dd HH:mm:ss.S', 'Format', 'yyyy-MM-dd HH:mm:ss.SSS')

2 件のコメント

Douglas Leaffer
Douglas Leaffer 2022 年 1 月 22 日
The date and time vectors are the same length. I think perhaps the problem lies with the way the .txt file is imported. I have attached an excerpt of the file if you have bandwidth to suggest further help. The coumns of interest are date = column 7; time = column 8
Michael Connolly
Michael Connolly 2023 年 3 月 28 日
Thank you for posting this! It fixed my problem.

サインインしてコメントする。

その他の回答 (1 件)

Rik
Rik 2017 年 7 月 17 日

1 投票

It is a bit confusing, but the capital S only denotes the fraction of a second, so not the second itself. The code below works.
my_string='2017-03-18 03:26:42.000000';
datetime(my_string,'InputFormat','yyyy-MM-dd HH:mm:ss.SSSSSS')

5 件のコメント

Guillaume
Guillaume 2017 年 7 月 17 日
Note that for decoding you only need one S regardless of the number of fractional digits. The number of S only affects the datetime display when it is part of the Format property
Rik
Rik 2017 年 7 月 17 日
Good to know, thanks Guillaume.
Amini
Amini 2022 年 2 月 3 日
thanks for your answers, I have to use the function datetime, actually I want to find the differences between timestamps. (for example: row 2 minuse row 1). the problem is two characters before the DAY 24 '[ and also the format of MONTH Sep. how should I use this function to approach this problem? thanks in advance. @Rik @Guillaume @Douglas Leaffer
Amini
Amini 2022 年 2 月 3 日
in this way it works:
DateStrings = {'24/09/2021:10:56:23'};
t = datetime(DateStrings,'InputFormat','dd/MM/yyyy:HH:mm:ss')
But my date is 24/Sep/2021:10:56:23
and in this way it doesn't work
DateStrings = {'24/Sep/2021:10:56:23'};
t = datetime(DateStrings,'InputFormat','dd/MM/yyyy:HH:mm:ss')
%again, beside the problem of two extra characters
Amini
Amini 2022 年 2 月 3 日
I found it how to eliminate the extra characters, using erase but still stacked with MONTH part

サインインしてコメントする。

カテゴリ

ヘルプ センター および File Exchange で Dates and Time についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by