A problem in calculating diffrence between two dates

function totalDays=dateDiff(date1,date2)
y1=date1(3);
y2=date2(3);
diff1 = dateDiffSameY(date1,[31 12 y1])+1;
diff2 = dateDiffSameY([1 1 y2],date2);
sum=0;
for i=(date1(3)+1):(date2(3)-1)
if checkLeapYear(i) == 0 % function to cheak if a year is leap
sum = sum + 364;
else
sum = sum + 365;
end
end
totalDays = diff1 + diff2 + sum;
end
Well, I don't see the problem. I know that there are some situations that I forgotten but for example if I enter dateDiff([22 2 1732],[14 12 1799]) my function return 24701 When using daysact I get 24767 .
Where is my mistake? Very new in matlab, hope for your help.

댓글 수: 2

googo
googo 2013년 3월 25일
편집: googo 2013년 3월 25일
ok.. I think the problem was fixed by adding +1 to each sum in the loop
Jan
Jan 2013년 3월 25일
편집: Jan 2013년 3월 25일
Please use meaningful tags. "matlab" and "matlab code" do not help in a Matlab forum.
I cannot guess, what "daysact", "dateDiffSameY" and "checkLeapYear" is.
Do not shadow the builtin function "sum" by a variable of the same name. This leads to unexpected problems frequently.

댓글을 달려면 로그인하십시오.

 채택된 답변

Jan
Jan 2013년 3월 25일
The difference bertween dates can be calculated much easier:
function result = dateDiff(a, b)
result = datenum(a) - datenum(b);

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Dates and Time에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

질문:

2013년 3월 25일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by