【问题标题】:Calculate difference of months and semi-month difference between two dates using Jquery使用Jquery计算两个日期之间的月差和半月差
【发布时间】:2019-05-01 10:00:36
【问题描述】:

即使月份有 31 天或 30 天,我也想要正确的结果。

var startDt = $("input[id=StartDate_" + i + "]").val();
var endDt = $("input[id=EndDate_" + i + "]").val();
var diff = new Date(Date.parse(endDt) - Date.parse(startDt));
var days = ((diff / 1000 / 60 / 60 / 24) + 1);

if (SelVal == "Monthly") {
  $("#div" + i).html(Math.ceil(days / 30));
}
if (SelVal == "Semi-monthly") {
  $("#div" + i).html(Math.ceil(days / 15));
}

我想计算开始日期是 2019 年 4 月 10 日和结束日期是 2019 年 5 月 14 日的差异。我想要每月和每半个月。对于这个例子:

  • 月数差异为 1
  • 半月差将是 3,因为月中是 按每月 15 日计算。

例如,任何中心的计费发生在每月 1 日和 15 日,我需要两个日期之间的计费次数。

【问题讨论】:

  • 您需要更清楚地描述您希望此计算执行的操作,以及它为什么不适合您的原因。现在这里没有足够的信息来有效地帮助你。一个可行的例子也会有所帮助。
  • 编辑问题以包含这些详细信息。还要清楚你所说的“半月刊”本身是没有意义的。
  • 已编辑请检查
  • 您是否考虑过使用momentJS 之类的东西 - 它应该会使这种事情变得更简单。例如momentjs.com/docs/#/displaying/difference 。如果不需要,不要重新发明轮子!
  • 因此,如果我将评论总结为:任何部分月份或任何部分半月都算作一个附加值。那么使用我的示例 4 月 10 日至 5 月 16 日,然后是 4 个半月和 2 个整月,而您原来的问题是 3 半个月是错误的?

标签: javascript jquery date


【解决方案1】:

好的,试试这个:

var date1 = new Date("10/31/2019");
var date2 = new Date("12/1/2019");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
console.log(diffDays)
console.log("months: "+ (Math.floor(diffDays/30)));
console.log("days: "+ (diffDays%30));

看看代码sn-p

var date1 = new Date("10/31/2019");
var date2 = new Date("12/1/2019");
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
console.log(diffDays)
console.log("months: "+ (Math.floor(diffDays/30)));
console.log("days: "+ (diffDays%30));

【讨论】:

  • 这给出了天,但问题是“月”和“半月”,后者基于月 15 日
猜你喜欢
  • 2010-12-04
  • 1970-01-01
  • 2011-06-06
  • 2011-08-03
  • 1970-01-01
  • 2019-12-27
相关资源
最近更新 更多