Bug? Datetime creation produces both NaT and 1-Jan-1970 values.
Ältere Kommentare anzeigen
When I run the following code in either R2014b or R2016a I get:
clear d, d(:,2) = datetime(randi(10,5,3))
d =
NaT 03-Feb-0007
01-Jan-1970 10-Mar-0009
01-Jan-1970 04-Sep-0010
01-Jan-1970 02-Mar-0006
01-Jan-1970 03-Sep-0002
and with 3 columns instead of 2:
clear d, d(:,3) = datetime(randi(10,5,3))
d =
NaT 01-Jan-1970 06-Feb-0008
NaT 01-Jan-1970 03-Feb-0008
01-Jan-1970 01-Jan-1970 08-May-0003
01-Jan-1970 01-Jan-1970 03-Oct-0007
01-Jan-1970 01-Jan-1970 06-Apr-0007
and with a column vector of 6 elements instead of 5:
clear d, d(:,3) = datetime(randi(10,6,3))
d =
NaT 01-Jan-1970 08-Jul-0008
NaT 01-Jan-1970 08-Apr-0001
01-Jan-1970 01-Jan-1970 02-Oct-0003
01-Jan-1970 01-Jan-1970 05-Jan-0001
01-Jan-1970 01-Jan-1970 05-May-0001
01-Jan-1970 01-Jan-1970 07-Apr-0009
So, what this does is create a column vector of some random datetime values and assign it to a non-existent matrix in its last column. If you'd do this with a vector of numeric values, all other values in the matrix would become zeroes by default, e.g.:
clear M, M(:,2) = ones(3,1)
M =
0 1
0 1
0 1
As we can see, the values in the datetime matrix that are not set are not zeroes. This cannot be, because a datetime must always obey a format such as dd-MM-yyyy like in the default behaviour. It appears MATLAB tries to fill the rest of the matrix with either
datetime(0,'ConvertFrom','posixtime')
ans =
01-Jan-1970 00:00:00
or NaT (Not-a-Time), the equivalent of the numeric NaN (Not-a-Number).
Why does MATLAB behave like this? Is this a bug, or am I causing it?
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu MATLAB finden Sie in Hilfe-Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!