在MATLAB中添加额外的时间到当前时钟时间(时区)

时间:2013-11-14 23:50:42

标签: matlab loops time real-time clock

我想将变量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分钟到时钟时间之间添加,因此我不确定如何处理余数。

1 个答案:

答案 0 :(得分:1)

通过将time类型string添加到Correction这是一个数字,您将无法获得任何合理的结果。

datenum可以在这里帮到你。它可以将日期向量转换为日期数。我不是这个问题的专家。但我知道命令now返回的数据格式称为日期编号。 (有关其他功能,请参阅here并查看其输入和输出类型)

但是在您的情况下,处理日期向量表示时间更容易:

  
    

完整日期向量有六个元素,按顺序指定年,月,日,小时,分钟和秒。 ....示例:[2003,10,24,12,45,07]

  

因此,您可以使用Correctiondatenum时间转换为日期数,然后将其添加到从now获取的值(此处为d }):

datestr(d + datenum([0 0 0 0 0 Correction]))

这是考虑Correction以秒为单位。

希望它有所帮助。