Convert netcdf time ('minutes since 2013-2-1 00:00:00') to actual date
31 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Marzuki Marzuki
le 2 Nov 2021
Commenté : Marzuki Marzuki
le 2 Nov 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 commentaires
Réponse acceptée
Steven Lord
le 2 Nov 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)
Plus de réponses (1)
Bjorn Gustavsson
le 2 Nov 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
Voir également
Catégories
En savoir plus sur NetCDF dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!