电子说
制作netcdf数据时,常遇到需要转换时间变量单位的问题。
netcdf数据常用时间单位有"days since xxx-xx-xx"、"hours since xxx-xx-xx"、儒略日。如何切换成各单位?
本文提供matlab几个函数,实现时间单位切换。
一、单位是"days since xxx-xx-xx":
以计算2023-1-1距离2020-1-1多少天为例:
代码:
startDate = datenum('1-Jan-2020 00:00:00');
endDate = datenum('1-Jan-2023 00:00:00');
delta_days = endDate-startDate;
结果:
delta_days = 1096
二、单位是"hours since xxx-xx-xx":
在上面结果*24即可。
以计算2023-1-1 12:00:00距离2020-1-1 00:00:00多少天为例:
代码:
startDate = datenum('1-Jan-2020 00:00:00');
endDate = datenum('1-Jan-2023 12:00:00');
delta_days = endDate-startDate;
delta_hours = delta_days * 24;
结果:
delta_days =1096.5
delta_hours =26316
三、单位是儒略日:
以计算2023-1-1 00:00:00的儒略日为例:
代码:
date_time = datetime("2023-01-01 00:00:00")
time_juliandate = juliandate(date_time)
结果:
time_juliandate = 2459945.5
四、单位从"days since 2019-1-1"转成"days since 2020-1-1"
代码:
time = 1461;
endDate = time + datenum(2019,1,1);
startDate = datenum('1-Jan-2020 00:00:00');
delta_days = endDate-startDate;
结果:
delta_days =1096
总结:通过下面几个函数就可以实现时间单位的转换:
datenum:时间转成数值,用于计算时间的差值;
datetime:转成时间数据类型;
days:数值加上天数的单位;
juliandate:时间转成儒略日
全部0条评论
快来发表一下你的评论吧 !