Convert time string to 24 hour format then into Decimal using current time clock
4 次查看(过去 30 天)
显示 更早的评论
I am trying to convert the variable AST from a string to a number in 24 hour format. I would then like to store AST as a new variable, call it 'ASTdec' in decimal i.e AST at 13:30 = 13.5 so that I can manipulate it with other eqns. AST is the solar time, converted from regular clock time.
background code:
c = clock();
tsNow = datenum(c);
tsStart = datenum([c(1) 1 1 0 0 0]);
daysInYear = tsNow - tsStart;
DayOfYear = floor(daysInYear)+1;
get current LST time in 24 hour format:
datestr(now);
d = rem(now,1);
datestr(d);
time = datestr(d, 'HH:MM');
get apparent solar time AST:
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));
AST = datestr(d - datenum([0 0 0 0 Correction 0]));
Tried using:
ASTVec = datevec(AST, 'HH:MM');
SolarMinutes = ASTVec(5);
SolarHours = ASTVec(4);
to get the vector and then do manipulation with the vector cells to get my decimal but SolarHours are not in 24 hr format because the string is not in 24 hour format. Variable
Correction
is already a value of time expressed in decimal and is used to define AST.
0 个评论
采纳的回答
Walter Roberson
2013-11-15
It looks to me like,
ASTVec = datevec(d - Correction/(24*60));
3 个评论
Walter Roberson
2013-11-15
Minutes if I have correctly understood your Correction to be in minutes. You would continue on with your existing code,
SolarMinutes = ASTVec(5);
SolarHours = ASTVec(4);
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Dates and Time 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!