如何使用js实现这个excel公式:年差=days360(date1,date2)/360

gdutcc 2007-11-30 11:36:55
现在网上有很多关于 js 比较两个日期之间的天数差
如function daysElapsed(date1,date2) {
var difference = Date.UTC(date1.getYear(),date1.getMonth(),date1.getDate(),0,0,0)
- Date.UTC(date2.getYear(),date2.getMonth(),date2.getDate(),0,0,0);
return difference/1000/60/60/24;
}
这个是绝对天数差。
如果想计算date1,date2之间利用“每月30天,每年360天”来计算年差,怎么做啊??
起始和终止日期的年月日都可以单独作为参数传入。。。。

也就是说 计算的结果与 excel中公式days360计算两个日期得到的结果是一致的
年差=days360(date1,date2)/360
如何使用js实现这个excel公式:年差=days360(date1,date2)/360
...全文
724 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdutcc 2007-12-13
  • 打赏
  • 举报
回复
var date1 = new Date("1996/06/21");
var date2 = new Date("2007/11/26");
var fm=date1.getMonth();
var sm=date2.getMonth();
var dd1=(sm-fm)*30+(date2.getDate()-date1.getDate());
var year = date2.getFullYear() - date1.getFullYear()+dd1/360;

year=11.4305555

自己解决了 ,不过也要谢谢上述各位。。。
gdutcc 2007-12-13
  • 打赏
  • 举报
回复
最好的结果是:

使用excel计算的结果和 使用js计算的结果一致


计算的结果与 excel中公式days360计算两个日期得到的结果是一致的
例如 1996年6月21日 与 2007年11月26日,两个日期相差 11.43年
gdutcc 2007-12-13
  • 打赏
  • 举报
回复
能否说一下原理?
zhengshaodong 2007-12-10
  • 打赏
  • 举报
回复

var date1 = new Date("2007/11/26");
var date2 = new Date("1996/06/11");
var date3 = new Date(2000,date1.getMonth(),date1.getDate());
var date4 = new Date(2000,date2.getMonth(),date2.getDate());
var year = date1.getFullYear() - date2.getFullYear() + (date3 > date4 ? 0 : -1);

计算整年的方法。。。包括了闰年之类的 你可以参考下。
gdutcc 2007-12-10
  • 打赏
  • 举报
回复
(date1-date2)/1000/60/60/24/365;
这个是根据date1和date2之间的毫秒差,如果最后是除以365,是不是意味着 一年一定是365天????

闰年怎么办????
zhengshaodong 2007-12-06
  • 打赏
  • 举报
回复
如果想保留2位小数点的话就这样

<script type="text/javascript">
var date1 = new Date("2007/11/26");
var date2 = new Date("1996/06/11");
var date3 = (date1-date2)/1000/60/60/24/365;
window.alert(Math.round(date3*100)/100); //如果是3位小数点就*1000,4位*10000
</script>
zhengshaodong 2007-12-06
  • 打赏
  • 举报
回复

<script type="text/javascript">
var date1 = new Date("2007/11/26");
var date2 = new Date("1996/06/11");
window.alert((date1-date2)/1000/60/60/24/365);
</script>
gdutcc 2007-12-06
  • 打赏
  • 举报
回复
to JK_10000
你写的这个只是比较了年。不精确。 需要精确到天。
例如 1996年6月21日 与 2007年11月26日,两个日期相差 11.43年

=两个日期的天数除以360

JK_10000 2007-12-04
  • 打赏
  • 举报
回复

<script>
var d1=new Date("2009/01/02");
var d2=new Date("2007/01/01");
function getYearDifference(d1,d2){
return (d1.getMonth()>=d1.getMonth() && d1.getDate()>=d2.getDate() ) ? d1.getFullYear()-d2.getFullYear() : d1.getFullYear()-d2.getFullYear()-1;
}
alert(getYearDifference(d1,d2));

</script>
gdutcc 2007-12-03
  • 打赏
  • 举报
回复
高难问题???谁来解决啊。。。。。各位大师
tantaiyizu 2007-11-30
  • 打赏
  • 举报
回复
高难问题

87,910

社区成员

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

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