小函数输入是年月日和秒
本身读取的数据是从格林威治时间某天0点开始
也就是输入的时间怎么转化成读取的数据库时间的时间序列的问题
遇到的两个问题一个是怎么在文件名称中读取开始时间
一个是怎么计算时间间隔,因为要考虑年月日的混合运算
关于第一个问题就是将读取的文件名称作为字符串,里面涉及一个正则判定是不是数字或者字母的函数
filename = sprintf('GFS_WindData_20210303_GMT00_f357.mat');
filename_char = char(filename);
TF = isstrprop(filename,'digit');%就是这个函数
idx = find(TF);
for i = 1:8
time_data(i) = filename_char(idx(i));
end
实现细节有两个,一个是文件名称无中文,一个是char可以直接按照矩阵的方式进行逐个读取
关于第二个问题就是时间间隔的计算
Matlab对于时间的运算有很多自己的函数,也有自己的格式
在这个项目里面是输入年月日和秒
就需要先把输入的整型数据转换成时间格式数据
year = 2021;
month = 03;%上限是12
date = 08;%上限是31
t = 12300;%上限是86400
T_shuru = date+month*100+year*10000;
t_shuru = datetime(T_shuru,'ConvertFrom','yyyymmdd');
然后是把文件名称中读取的时间数据转换成时间格式数据
T_duqu = str2num(time_data);
t_duqu = datetime(T_duqu,'ConvertFrom','yyyymmdd');
然后是利用其自带的函数进行时间间隔的运算和最后结果的提取
t_jiange = t_shuru-t_duqu;
%提取小时间隔为数字
t_jiange_char=char(t_jiange);
TF_temp = isstrprop(t_jiange_char,'digit');
for i = 1:length(TF_temp)
if TF_temp(i)~=0
time_temp(i) = t_jiange_char(i);%time_temp这个表示的是间隔的小时,表示方式是字符串
else
break;
end
end
t_chazhi = t + str2num(time_temp)*60*60;
over
qwq