2013-11-14 83 views
1

我想將變量Correction添加到當前時間以獲得新時間。在MATLAB(時區)中添加額外的分鐘時間到當前時鐘時間

這裏是我的代碼來獲取當前時間(工作):

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

通過將time這是類型stringCorrection這是一個數字,你將得不到任何合理的。

datenum可以幫助你在這裏。它可以將日期向量轉換爲日期編號。我不是這個問題的專家。但我知道命令now返回的數據格式稱爲日期編號。 (見here其他功能,看看它們的輸入和輸出類型)

不過你的情況很容易處理最新矢量的時間表示:

一個完整日期矢量有六個要素,按照該順序指定年,月,日,小時,分鐘和秒。 ....例如:[2003,10,24,12,45,07]

所以,你可以使用datenum轉換Correction時間日期數字,然後將其添加到值從now(這裏d)收購:

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

這是考慮Correction在幾秒鐘內。

希望它有幫助。

+0

校正以分鐘爲單位進行測量,數值的小數部分表示秒。我嘗試了最後一行代碼,但它在最後3個位置(分鐘)中沒有任何修正。在第四個位置,它返回一個不正確的日期和時間。還有什麼想法? 編輯:抱歉,我忘了重新運行該程序,因此它使用了程序上次運行時的錯誤值。我認爲這是有效的。 datetr(d + datenum ...)中的新值現在是一個字符串還是一個數字? – loco

+0

好吧,如果是在幾分鐘內,你應該把它作爲向量的第二個元素:'[0 0 0 0 Correction 0]'。即使「校正」不是一個整數,沒有問題,小數部分將被添加到秒。我的意思是「0.1分鐘」當然是6秒。 – pm89

+0

'datestr'返回一個字符串,請在我放置的鏈接上拿一個贓物,它會幫助你。 – pm89