Extract Values from matrix and use them to calculate days passed
Show older comments
I have to extract values from one string of input, and using those values to calculates the days passed
Here's the main code
clear,clc
%1. Get Inputs
intDate = input('Enter Date in yyyy/mm/dd format: ','s');
intYear = intDate(1:4);
intDay = intDate(9:10);
intMonth = intDate(6:7);
if isLeapYear(intYear)
intMonth = intDate(6:7);
if ~isValidMonth(intMonth)
msgbox('Pleaes enter a valid Month');
return
end
if ~isValidDate(intDay,intMonth,intYear)
msgbox('Pleaes enter a valid Day');
return
end
if intMonth==1||intMonth==3
intDaysPassed = ((((intMonth-1)*30)+intDay)-1);
elseif intMonth==2||intMonth==4||inthMonth==5||intMonth==8
intDaysPassed = (((intMonth-1)*30)+intDay);
elseif intMonth==6||intMonth==7||intMonth==9||intMonth==10
intDaysPassed = (((intMonth-1)*30)+(intDay+1));
elseif intMonth==11||intMonth==12
intDaysPassed = (((intMonth-1)*30)+(intDay+2));
end
else
strMessage = 'Please enter a valid leap year';
msgbox(strMessage)
return
end
*
Here's the code for the month
function Month = isValidMonth(intMonth)
a = (intMonth <=12);
Month = (a~=0);
end
****
Here's the code for the day
function Day = isValidDate(intDay,intMonth,intYear)
DaysInMonth = [31 28 31 30 31 30 31 31 30 31 30 31]; % A 1x12 array
if isLeapYear(intYear)
DaysInMonth(2) = 29;
end
Day = (intDay >= 1) && (intDay <= DaysInMonth(intMonth));
end
*
Here's the code for the Year
function LeapYear = isLeapYear(intYear)
a = mod(intYear,400);
b = mod(intYear,100);
c = mod(intYear,4);
LeapYear = ((a==0)||(b~=0 && c==0));
end
Everytime I try to run it, it keeps giving me these errors
Ex. I would enter 2012/03/15 as the input
Operands to the and && operators must be convertible to logical scalar values.
Error in isLeapYear (line 5) LeapYear = ((a==0)||(b~=0 && c==0));
Error in Homework6_Question2 (line 9) if isLeapYear(intYear)
How do I convert the matrix values to scalar values so I could apply the calculation for the days passed? Is there anything else wrong in my codes? Please help !
Thank you so much !
Answers (1)
Bjorn Gustavsson
on 16 Jul 2013
0 votes
Look at matlab's datestr, datenum and datevec functions instead.
Categories
Find more on Satellite Mission Analysis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!