【问题标题】:How to calculate number of day name between 2 dates in javascript如何在javascript中计算2个日期之间的天数
【发布时间】:2016-03-16 08:54:30
【问题描述】:

我有 2 个日期选择器和一个工作日复选框列表。用户可以选择开始日期或结束日期并选中任何复选框日期。我要数数 2 天之间的工作日。

例如:我想参加任何瑜伽课程,然后我将选择开始或结束日期,并选择星期一、星期二等工作日。

现在我想计算两个日期之间所有星期一和星期二的数量

 date1 = Mar 01,2016 
 date2 = Apr 01,2016 

我想像这样计算这些日期之间的天数:

星期天数:4
星期一数:4
星期二的数量:5 等等。

我试过这个代码

var d           = new Date(date1);
var now         = new Date(Date.now());
var daysOfYear  = [];
count           = 0;
for (d ; d <= date1 ; d.setDate(d.getDate() + 1)) {
  val = $("#ch_"+d.getDay());           
  if(val.is(':checked')){
    count++;
  }
}

但它给出了TypeError: d.getDay is not a function

【问题讨论】:

  • 您需要发布您目前编写的代码并指出它在哪里不起作用。
  • 很遗憾,您在当前表格中的问题并不合适。 SO是针对具体问题的。如果您在使其工作时遇到问题,请将您的非工作代码添加到问题中,并尽可能准确地描述什么不起作用以及它是如何失败的。
  • @JohannesJander 确定。我会记得
  • 谢谢 :) 一点提示:由于我提到的问题,这个问题可能会被关闭。关闭的问题算作对您的帐户的罢工,并且可能是导致帐户被禁止的一个因素(如果您也经常投反对票)。因此,明智的做法是编辑您的问题以提高其质量。
  • @JohannesJander 嘿,请告诉我我在做什么。我不明白为什么这个问题被搁置。我没有解释吗?请

标签: javascript date


【解决方案1】:

您需要在日期之间迭代并检查日期

先将日期转换成日期对象

date1 = convertToDateObj(date1); //assuming you already have a way to parse this string to date
date2 = convertToDateObj(date2); //assuming you already have a way to parse this string to date

现在遍历它们

var dayCount = {0:0,1:0,2:0,3:0,4:0,5:0,6:0}; //0 is sunday and 6 is saturday
for (var d = date1; d <= date2; d.setDate(d.getDate() + 1)) 
{
    dayCount[d.getDay()]++;
}
console.log(dayCount);

【讨论】:

  • 这似乎有点乏味。肯定有每天的整周数加上每个剩余天的额外 1。如果任何一天出现 n 次,那么其他任何一天都会出现在 n-1 和 n+1 之间。
  • @robg 你是说为什么不先计算周数,然后再计算一周中的每一天,然后再计算剩余天数?
  • @robg 不是你建议的更乏味的东西吗?不要认为迭代天数会低效,除非差异达到数万。
  • 我所说的乏味是指效率低下、速度慢并且需要比必要的重复次数多得多。对于小范围,它可能无关紧要,但对于大范围来说可能是。 (end - start) / msPerWeek | 0 是周数,所以每天有这么多周。然后((end - start) % msPerWeek) / msPerDay | 0 是剩余的天数,所以从最后一天开始倒数并在每个天数上加一。无论范围的长度如何,处理时间都应该相同。它可能会多一点(但不多)代码,但效率要高得多。
  • @RobG 要找出周数,我首先必须计算无论如何我需要在日期之间迭代的天数。所以我不确定它会如何更有效率。您能回答并分享如何完成吗?之后我们会比较性能:)
猜你喜欢
  • 1970-01-01
  • 2014-09-19
  • 2020-10-16
  • 2014-08-07
  • 2018-12-16
  • 2011-11-26
  • 1970-01-01
  • 2012-02-26
相关资源
最近更新 更多