javascript - 如何在 Javascript 中查找两个日期之间的给定天数?

标签 javascript date

我有两个任意日期,比如说 2012 年 4 月 1 日和 2013 年 1 月 15 日。我想计算这两个日期之间星期日、星期一、星期二、星期三、星期四、星期五和星期六的数量。

是否有一种可靠且快速的方法可以在不损害用户 CPU/浏览器的情况下执行此操作?

谢谢

更新

这样做的前提是,我们对于一周中的任何一天都有定义的平均事件数。我们需要计算一个时间段内发生的事件数量,即使是部分事件(例如周日的 1/2 天将是添加到总数的事件数量的一半)

最佳答案

好的,这是一个可能未经测试的解决方案

date1 = new Date("2012-02-10");
date2 = new Date("2012-03-10");

daysInBetween = (date2.getTime() - date1.getTime())/1000/3600/24;

dayOfTheWeek1 = date1.getDay();

weeks = parseInt(daysInBetween/7, 10);
extraDays = daysInBetween%7;

您有 周 + 1dayOfWeek1 ... dayOfWeek1 + (6 - extraDays)

您有 weeks + 1 + extraDaysdayOfWeek1 + (6 - extraDays) ... dayOfWeek1 + 6

请考虑一下,如果dayOfWeek1 === 6,那么我假设dayOfWeek1 + 1 === 0

编辑:

更多一点代码:

var days = {};
var dayOfTheWeekEnd = dayOfTheWeek1 + 6 - extraDays; // no imagination for names...
if (dayOfTheWeekEnd < 6) {
  if (0 >= dayOfTheWeek1 && 0 <= dayOfTheWeekEnd) {
    days.sunday = weeks + 1;
  } else {
    days.sunday = weeks + 1 + extraDays;
  }
  // etc for the other days, a for loog with an i instead of the 0 would be better.
} else {
  // I have to go the school! I'll edit it later.
  // The idea is that you have to take dayOfTheWeekEnd back to the 0-6 range
  // and check if its after dayOfWeek1 or before dayOfTheWeekEnd, then days.sunday=weeks+1.
}

关于javascript - 如何在 Javascript 中查找两个日期之间的给定天数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16549666/

相关文章:

javascript - 当 javascript 值插入到 .net 文本框时,document.getElementsByName(...)[0] 未定义

c# - 我怎样才能从日期得到正确的工资期?

javascript - 如何在 JQuery 中按日期对 xml 数据进行排序

PHP 通过给出日期获取日期列表

mysql - MYSQL 中使用 BETWEEN 的日期

php - jQuery 函数未在 PHP foreach 循环内执行

java - 检查浏览器是否支持盲人或部分视力的人?

javascript - 在背景中缩放图片,站点引用

Javascript-如何突出显示与 HTML 中的表单用户输入文本区域匹配的元素数组

ruby-on-rails - created_at 被保存覆盖吗?