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
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에 대해 자세히 알아보기

질문:

2017년 7월 17일

댓글:

2023년 3월 28일

Community Treasure Hunt

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

Start Hunting!

Translated by