1

我想将变量添加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 分钟,所以我不确定它将如何处理其余部分。

4

1 回答 1

1

通过将timewhich 的类型添加stringCorrectionwhich 是一个数字,您将不会得到任何合理的结果。

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

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

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

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

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

这被认为Correction是在几秒钟内。

希望能帮助到你。

于 2013-11-15T00:22:40.403 回答