Convert netcdf time ('minutes since 2013-2-1 00:00:00') to actual date
24 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Marzuki Marzuki
el 2 de Nov. de 2021
Comentada: Marzuki Marzuki
el 2 de Nov. de 2021
Hi all;
I have netcdf file. When I use ncdisp on the netcdf file, time is described as the following:
XTIME
Size: 22177x1
Dimensions: XTIME
Datatype: double
Attributes:
standard_name = 'time'
units = 'minutes since 2013-2-1 00:00:00'
calendar = 'standard'
axis = 'T'
netcdf_time = ncread('data.nc','XTIME'), provide
60
120
180
240
300
360
420
...
I used the following code to convert XTIME to actual date,
t1 = double(netcdf_time) + datenum('2013-2-1 00:00:00');
t2 = datevec(t1);
However, the result is not correct, as below
2013 4 2 0 0 0
2013 6 1 0 0 0
2013 7 31 0 0 0
...
Actual date should be hourly time fomat.
If any of friends here have any experience with this problem, please share it. I really thank you for that.
0 comentarios
Respuesta aceptada
Steven Lord
el 2 de Nov. de 2021
I recommend using datetime rather than datenum.
netcdf_time = 60:60:300 % Sample data
epoch = datetime(2013, 1, 2) % Assuming January 2nd, swap the 1 and 2 for February 1st
T = epoch + minutes(netcdf_time)
Más respuestas (1)
Bjorn Gustavsson
el 2 de Nov. de 2021
Remember that datenum is in (fractional) days, while your netcdf-time is in minutes. It seems likely that you want to do:
t1 = double(netcdf_time)/60/24 + datenum('2013-2-1 00:00:00');
HTH
Ver también
Categorías
Más información sobre NetCDF 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!