MATLAB: Problem in converting datetime to POSIX and then the same POSIX back to datetime

datetimeposixtime

Given that I have specified the time zone in t, could you please explain why the last row will not convert it back to 'XXXX-XX-XX 10:05:24', but to 'XXXX-XX-XX 09:05:24'?
t = datetime('2016-07-29 10:05:24', 'TimeZone','Europe/London') + calmonths(1:3) %-> ZONED datetime
p = posixtime(t)
datetime(p, 'ConvertFrom', 'posixtime')

Best Answer

While converting the posixtime to datetime specify the TimeZone using name-value pair,If not specified the posix times are considered as UTC times due to which you are not getting correct results.
z = datetime(p, 'ConvertFrom', 'posixtime', 'TimeZone','Europe/London');