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.
datetimes with datenums, you can convert the datenums to
datetime(x, 'ConvertFrom', 'datenum'), or you
can convert the
datetimes to datenums by accessing its
dnums field with
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.