datestr problem with minutes

Hello everyone,
I'm encountering a problem with date conversion. I have a dataset column with dates in '1/5/2017 12:10:00AM' form and I want to convert it into '2017-05-01 00:10:00' format. I used the datestr function but the minutes are incorrect. All rows return with 00 minutes.
How can I fix this?
Thank you in advance, Vanessa

댓글 수: 3

Stephen23
Stephen23 2017년 6월 29일
@Vanessa: please show us the code you have used and the data that causes this behavior.
Vanessa
Vanessa 2017년 6월 29일
kwhm.date=datestr(kwhm.date,'yyyy-mm-dd HH:MM:SS');
date '1/5/2017 12:10:00AM' '1/5/2017 12:15:00AM' '1/5/2017 12:20:00AM' etc
Andrei Bobrov
Andrei Bobrov 2017년 6월 29일
Dear Vanessa! please accept the answers that solved your problems.

댓글을 달려면 로그인하십시오.

답변 (2개)

Walter Roberson
Walter Roberson 2017년 6월 29일

0 개 추천

t = datenum('1/5/2017 12:10:00AM' );
datestr(t, 'YYYY-mm-DD HH:MM:ss')
Andrei Bobrov
Andrei Bobrov 2017년 6월 29일
편집: Andrei Bobrov 2017년 6월 29일

0 개 추천

a = datetime('1/5/2017 12:10:00AM','I','dd/MM/yyyy hh:mm:ssa','F','yyyy-MM-dd HH:mm:ss')

댓글 수: 4

Vanessa
Vanessa 2017년 6월 29일
Thanks this worked but I have some rows which are '1/5/2017' without the time and the result of the above function is NaT. How can overcome this? thanks
You cannot. When you use datetime() all of the entries need to be in the same 'InputFormat' (that here was abbreviated as 'I'). If you know you have entries that are in a different format, you need to detect and process them.
For example:
a = datetime(StringArrayOfTimes, 'I', 'dd/MM/yyyy hh:mm:ssa','F','yyyy-MM-dd HH:mm:ss');
failed_on = isnat(a);
a(failed_on) = datetime(StringArrayOfTimes(failed_on), 'I', 'dd/MM/yyyy', 'F', 'yyyy-MM-dd HH:mm:ss');
The above does a patch-up pass, where it tries to re-interpret the failed times with the abbreviated format.
Vanessa
Vanessa 2017년 6월 29일
Thank you very much!!!
a = {'1/5/2017';
'1/5/2017 12:10:00AM';
'1/5/2017 12:15:00AM';
'1/5/2017 12:20:00AM';
'2/5/2017'};
t = ~cellfun(@isempty,regexp(a,'\d{4}$'));
a(t) = cellfun(@(x)[x,' 00:00:00AM'],a(t),'un',0);
out = datetime(a,'I','dd/MM/yyyy hh:mm:ssa','F','yyyy-MM-dd HH:mm:ss')

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Dates and Time에 대해 자세히 알아보기

태그

질문:

2017년 6월 29일

댓글:

2017년 6월 29일

Community Treasure Hunt

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

Start Hunting!

Translated by