convert narr model data time to datevec or datestr

1 visualización (últimos 30 días)
Leyon
Leyon el 10 de Jul. de 2014
Comentada: Leyon el 11 de Jul. de 2014
I have a set of model data that has time attributes:
Attributes:
units = 'hours since 1800-1-1 00:00:0.0'
long_name = 'Time'
axis = 'T'
standard_name = 'time'
coordinate_defines = 'start'
delta_t = '0000-00-01 00:00:00'
actual_range = [1.74e+06 1.75e+06]
avg_period = '0000-00-01 00:00:00'
When I pull a sample time such as time(1:5) I get:
1744392
1744416
1744440
1744464
1744488
When trying to convert to date string using datestr(time(1)) I get: 25-Dec-4775. I try putting in a pivot year of 1800 but still get the same result. What am I doing wrong? The result should be Jan 1st 1999.
  2 comentarios
Star Strider
Star Strider el 10 de Jul. de 2014
How are you calculating 'time'?
Leyon
Leyon el 10 de Jul. de 2014
I am not calculating time. The time variable was part of the netcdf file with the attributes shown. A copy of the data (68mb) can be downloaded from:

Iniciar sesión para comentar.

Respuesta aceptada

dpb
dpb el 10 de Jul. de 2014
>> dn1800=datenum(1800,1,1) % baseline point in Matlab datenum
dn1800 =
657438
>> datestr(dn1800+1744392/24) % add that many hours in days...
ans =
01-Jan-1999
The better way...
>> datestr(addtodate(dn1800,1744392,'hour'))
ans =
01-Jan-1999
>>
  2 comentarios
Leyon
Leyon el 10 de Jul. de 2014
Thanks for the assist. Was becoming quite bothersome.
Leyon
Leyon el 11 de Jul. de 2014
how would I go about entering a regular date 1999,1,1 and get the datenum 1744392? I tried reversing your process but that doesn't work

Iniciar sesión para comentar.

Más respuestas (1)

dpb
dpb el 11 de Jul. de 2014
Seems ok to me...
>> (datenum(1999,1,1)-dn1800)*24
ans =
1744392
Convert the days to hours from the reference point.

Categorías

Más información sobre Calendar en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by