You need to use the correct format, and the correct syntax for the time zone. (I am using R2018a, although I would be surprised if this format and syntax have changed since it was introduced in R2014b.)
Also, you do not need the datestr call.
With those changes:
t = datetime('now','TimeZone','local','Format','dd-MM-yyyy HH:mm:ss Z');
t.TimeZone = 'America/New_York' ;
produces:
t =
datetime
21-08-2018 14:05:58 -0600
t =
datetime
21-08-2018 16:05:58 -0400
Note: I am in the U.S. Mountain time zone (equivalent to 'America/Denver'), thus the offset.
Best Answer