A problem in calculating diffrence between two dates

3 次查看(过去 30 天)
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 个)

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

标签

尚未输入任何标签。

Community Treasure Hunt

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

Start Hunting!

Translated by