我想将变量Correction
添加到当前时间以获得新的时间。
这是获取当前时间(工作)的代码:
datestr(now);
d = rem(now,1);
datestr(d);
time = datestr(d, 'HH:MM');
这是我的代码,展示如何获得更正因子(工作):
c = clock();
tsNow = datenum(c);
tsStart = datenum([c(1) 1 1 0 0 0]);
daysInYear = tsNow - tsStart;
DayOfYear = floor(daysInYear);
B = 360/365*(DayOfYear-81);
EoT = 9.87*sind(2*B)-7.53*cosd(B)-1.5*sind(B);
Correction = EoT - (4*(0-3.173));
Declination = 23.45*sind((360/365)*(284+DayOfYear));
如何解析Correction
以便将其HH:MM格式的值添加到当前时间?简单地说
AST = time + Correction;
将AST打印为具有6个值的向量。
注意:HH:MM格式为24小时格式,校正通常在0-60分钟到时钟时间之间添加,因此我不确定如何处理余数。
答案 0 :(得分:1)
通过将time
类型string
添加到Correction
这是一个数字,您将无法获得任何合理的结果。
datenum
可以在这里帮到你。它可以将日期向量转换为日期数。我不是这个问题的专家。但我知道命令now
返回的数据格式称为日期编号。 (有关其他功能,请参阅here并查看其输入和输出类型)
但是在您的情况下,处理日期向量表示时间更容易:
完整日期向量有六个元素,按顺序指定年,月,日,小时,分钟和秒。 ....示例:
[2003,10,24,12,45,07]
因此,您可以使用Correction
将datenum
时间转换为日期数,然后将其添加到从now
获取的值(此处为d
}):
datestr(d + datenum([0 0 0 0 0 Correction]))
这是考虑Correction
以秒为单位。
希望它有所帮助。