# how can I convert EST time to GMt time?

54 views (last 30 days)
Riyadh Muttaleb on 26 Feb 2018
Commented: Meade on 1 Mar 2018
I have series of datevec (about 1000) in EST time zone that I would like to convert them to GMT, any help,

Try using the 'TimeZone' property in the datetime function to re-interpret the input time in a new time zone.
Best,

#### 1 Comment

Riyadh Muttaleb on 26 Feb 2018
Thank you for your response, I have matrix of time (series) not one value

Peter Perkins on 28 Feb 2018
Unless you are using a version of MATLAB prior to R2014b, you probably should not be using datevecs. Convert them to datetimes.
>> dv = [2018,2,28,9,16,34; 2018,2,28,9,16,49;2018,2,28,9,17,04]
dv =
2018 2 28 9 16 34
2018 2 28 9 16 49
2018 2 28 9 17 4
>> dt = datetime(dv,'TimeZone','America/New_York','Format','dd-MMM-uuuu HH:mm:ss z')
dt =
3×1 datetime array
28-Feb-2018 09:16:34 EST
28-Feb-2018 09:16:49 EST
28-Feb-2018 09:17:04 EST
>> dt.TimeZone = 'UTC'
dt =
3×1 datetime array
28-Feb-2018 14:16:34 UTC
28-Feb-2018 14:16:49 UTC
28-Feb-2018 14:17:04 UTC

That's a good tip! That looks like the best answer vs a messy loop of datestr calls.
Does datetime do lazy format parsing on the fly as well? One thing I like about datestr is that I can try to infer the format of the date if I don't know it a priori.
Peter Perkins on 1 Mar 2018
datetime does recognize some common formats. One of the problems with datenum/datestr/datevec was that they guess too much and sometimes get it wrong, silently.
Most common example is 01/02/2018. Because that's so common, datetime has some logic for that case based on your locale are and whether you also have, for example, 01/15/2018. So for me, in the US, it guesses month/day:
>> datetime('01/02/2018')
Warning: Successfully converted the text to datetime using the format 'MM/dd/uuuu', but the format is ambiguous and
could also be 'dd/MM/uuuu'. To create datetimes from text with a specific format call:
datetime(textinput,'InputFormat',infmt)
> In guessFormat (line 66)
In datetime (line 631)
ans =
datetime
02-Jan-2018
But this case is unambiguous:
>> datetime({'01/02/2018' '01/15/2018'})
ans =
1×2 datetime array
02-Jan-2018 15-Jan-2018