While the underlying data representation of datetime
is compatible with
(in fact, identical to) that of datenums, you cannot directly combine them
via assignment, concatenation, or most arithmetic operations.
This is because of the signature of the datetime
constructor. When combining
objects and primitive types like double
, the primitive type is promoted to an
object by calling the other object’s one-argument constructor on it. However, the
one-argument numeric-input consstructor for datetime
does not accept datenums:
it interprets its input as datevecs instead. This is due to a design decision on
Matlab’s part; for compatibility, Octave does not alter that interface.
To combine datetime
s with datenums, you can convert the datenums to datetime
s
by calling datetime.ofDatenum
or datetime(x, 'ConvertFrom', 'datenum')
, or you
can convert the datetime
s to datenums by accessing its dnums
field with
x.dnums
.
Examples:
dt = datetime('2011-03-04') dn = datenum('2017-01-01') [dt dn] ⇒ error: datenum: expected date vector containing [YEAR, MONTH, DAY, HOUR, MINUTE, SECOND] [dt datetime.ofDatenum(dn)] ⇒ 04-Mar-2011 01-Jan-2017
Also, if you have a zoned datetime
, you can’t combine it with a datenum, because datenums
do not carry time zone information.