Convert netcdf time ('minutes since 2013-2-1 00:00:00') to actual date
15 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Marzuki Marzuki
am 2 Nov. 2021
Kommentiert: Marzuki Marzuki
am 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 Kommentare
Akzeptierte Antwort
Steven Lord
am 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)
Weitere Antworten (1)
Bjorn Gustavsson
am 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
Siehe auch
Kategorien
Mehr zu NetCDF finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!