Why aren't my locale times converted to UTC time?

1 visualizzazione (ultimi 30 giorni)
Hello all,
I would like to convert some dates that are taken with the Amsterdam TimeZone into UTC TimeZone, reading Matlab doc I should use datetime combined wit the the TimeZone option. I have done so, but my time once converted keeps staying in the Amsterdam local time, I know that it should be two hours less in UTC.
Here below the proccess I use, myDatesLocal are Amsterdam timezone based, so array b should stay the same as it does, however, array a should change to two ours earlier. I would expect somehting like 12-Apr-2018 12:51:36 for the first date.
K>> myDatesLocal = myDates(1:3)
myDatesLocal =
3×1 cell array
'12/04/18 14:51:36'
'12/04/18 14:52:36'
'12/04/18 14:53:36'
K>> b =datetime(myDatesLocal,'InputFormat','dd/MM/yy HH:mm:ss','TimeZone','Europe/Amsterdam')
b =
3×1 datetime array
12-Apr-2018 14:51:36
12-Apr-2018 14:52:36
12-Apr-2018 14:53:36
K>> a =datetime(myDatesLocal,'InputFormat','dd/MM/yy HH:mm:ss','TimeZone','UTC')
a =
3×1 datetime array
12-Apr-2018 14:51:36
12-Apr-2018 14:52:36
12-Apr-2018 14:53:36
What am I doing wrong?
Thanks in advance!

Risposta accettata

Guillaume
Guillaume il 20 Apr 2018

No, when you create your a, you're simply telling matlab that the 14:51 is measured in the UTC timezone. At no point do you tell matlab that it is measured in Amsterdam timezone but to be displayed in UTC.

The correct way to do what you want is to create your datetime in the Amsterdam timezone, then tell matlab to change the timezone to UTC:

>> myDatesLocal = {'12/04/18 14:51:36'
                   '12/04/18 14:52:36'
                   '12/04/18 14:53:36'};
>> b = datetime(myDatesLocal,'InputFormat','dd/MM/yy HH:mm:ss','TimeZone','Europe/Amsterdam')
b = 
  3×1 datetime array
   12-Apr-2018 14:51:36
   12-Apr-2018 14:52:36
   12-Apr-2018 14:53:36
>> b.TimeZone = 'UTC'
b = 
  3×1 datetime array
   12-Apr-2018 12:51:36
   12-Apr-2018 12:52:36
   12-Apr-2018 12:53:36
  4 Commenti
Javier
Javier il 24 Apr 2018
Thanks Peter, could you explain a bit more what time zone I should specify in with the z option?
Peter Perkins
Peter Perkins il 26 Apr 2018
I don't understand the question. 'z' is something you would add to the display format of a datetime to show the (offset of) the time zone your array is set to. doc datetime.Format.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Dates and Time in Help Center e File Exchange

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by