# How to avoid "NaT" when converting a cell into datetime ? (Or: how to add missing parts of datetime ?)

2 views (last 30 days)
Sim on 12 Aug 2022
Edited: Sim on 12 Aug 2022
How to avoid "NaT" when converting a cell into datetime ?
(Or: how to add missing parts of datetime ?)
a = [
{'14-Jul-2021 17:00:00'}
{'15-Jul-2021 12:00:00'}
{'16-Jul-2021 21:00:00'}
{'17-Jul-2021' }
{'18-Jul-2021 06:00:00'}
{'19-Jul-2021 04:00:00'}
{'20-Jul-2021 17:00:00'}
{'21-Jul-2021 08:00:00'}]
a = 8×1 cell array
{'14-Jul-2021 17:00:00'} {'15-Jul-2021 12:00:00'} {'16-Jul-2021 21:00:00'} {'17-Jul-2021' } {'18-Jul-2021 06:00:00'} {'19-Jul-2021 04:00:00'} {'20-Jul-2021 17:00:00'} {'21-Jul-2021 08:00:00'}
datetime(a)
ans = 8×1 datetime array
14-Jul-2021 17:00:00 15-Jul-2021 12:00:00 16-Jul-2021 21:00:00 NaT 18-Jul-2021 06:00:00 19-Jul-2021 04:00:00 20-Jul-2021 17:00:00 21-Jul-2021 08:00:00
As workaround, how to add a representative hour (e.g. '12:00:00') where it is missing, in order to avoid a "NaT" ?

Stephen23 on 12 Aug 2022
Edited: Stephen23 on 12 Aug 2022
"How to avoid "NaT" when converting a cell into datetime ?"
Convert each cell individually. Certainly not as efficient as one DATETIME call, but it is fairly simple:
C = {...
'14-Jul-2021 17:00:00'
'15-Jul-2021 12:00:00'
'16-Jul-2021 21:00:00'
'17-Jul-2021'
'18-Jul-2021 06:00:00'
'19-Jul-2021 04:00:00'
'20-Jul-2021 17:00:00'
'21-Jul-2021 08:00:00'}; % one cell array :)
D = cellfun(@datetime,C)
D = 8×1 datetime array
14-Jul-2021 17:00:00 15-Jul-2021 12:00:00 16-Jul-2021 21:00:00 17-Jul-2021 00:00:00 18-Jul-2021 06:00:00 19-Jul-2021 04:00:00 20-Jul-2021 17:00:00 21-Jul-2021 08:00:00
Sim on 12 Aug 2022
Edited: Sim on 12 Aug 2022
Cool, thanks!! :-)
The logic of indexing the missing parts of datetime elements by using the "characters length of those datetime elements" (i.e. 11 characters in '17-Jul-2021'), works well in my case, many thanks !