javascript中关于日期的一个奇怪问题?(有源代码)

okzjq 2004-04-30 09:20:42
<script language="javascript">
function getFee(sum,beginDate,endDate,years){
var i,j,year,month,day;
var c1=new Date();
var c2=new Date();

i=beginDate.indexOf('-');
j=beginDate.lastIndexOf('-');
if(i<0 || j<0){
alert("日期格式错误,请重试!")
return 0;
}
else{
year=parseInt(beginDate.substring(0,i));
month=parseInt(beginDate.substring(i+1,j));
day=parseInt(beginDate.substring(j+1));
}
c1.setYear(year);
c1.setMonth(month);
c1.setDate(day);

i=endDate.indexOf('-');
j=endDate.lastIndexOf('-');
if(i<0 || j<0){
alert("日期格式错误,请重试!")
return 0;
}
else{
year=parseInt(endDate.substring(0,i));
month=parseInt(endDate.substring(i+1,j));
day=parseInt(endDate.substring(j+1));
}
c2.setYear(year);
c2.setMonth(month);
c2.setDate(day);


var days=(c2.getTime()-c1.getTime())/(1000*24*3600);
alert("the days is: "+days);
var result=Math.round(sum*days/(years*3.65));
result=result/100;
return result;
}
alert(getFee(1000,"2004-4-06","2004-4-30",1));
</script>

这是一个计算折旧费用的函数。sum表示总金额,beginDate表示开始日期,
endDate表示结束日期,years表示使用年数。
当计算getFee(1000,"2004-4-06","2004-4-30",1)会显示日期日期相差24天。
当计算getFee(1000,"2004-4-06","2004-5-1",1)会显示日期日期相差26天。
难道4月份也是31天的嘛?
...全文
45 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghlfllz 2004-04-30
  • 打赏
  • 举报
回复
/*****************************************************************
名称:DateCompare
功能:计算两个字符(YYYY-MM-DD)日期相隔天数
判断一个日期是否在另一个指定日期之后和之前
参数:asStartDate,起始日期
asEndDate,终止日期
返回:相隔天数的字符串
*****************************************************************/
function DateCompare(asStartDate,asEndDate){
var miStart=Date.parse(asStartDate.replace(/\-/g,'/'));
var miEnd=Date.parse(asEndDate.replace(/\-/g,'/'));
return (miEnd-miStart)/(1000*24*3600);
}

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧