How to calculate number of day name between 2 dates in javascript
我有两个约会者和一个星期的复选框列表。用户可以选择开始日期或结束日期,并选中任何复选框日期。我想数一数两天之间的一周。
例如:我想参加任何瑜伽课程,然后我会选择开始或结束日期,也会选择星期一、星期二等。
现在我要计算两个日期之间的所有周一和周二的天数
1 2
| date1 = Mar 01,2016
date2 = Apr 01,2016 |
我想像这样计算这些日期之间的天数:
no of sunday: 4
no of monday: 4
no of tuesday: 5 etc..
我试过这个密码
1 2 3 4 5 6 7 8 9 10
| 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。
- 您需要发布到目前为止编写的代码,并指出它在哪里不起作用。
- 不幸的是,您在当前表单中的问题不适合。具体问题也是如此。如果您在使其正常工作时遇到问题,请将您的非工作代码添加到问题中,并尽可能准确地描述哪些代码不起作用以及如何失败。
- @约翰内斯詹德当然。我会记得
- 谢谢:)抬头一点:这个问题可能会因为我提到的问题而被解决。封闭式问题被视为对你的账户的攻击,可能是导致账户被禁止的一个因素(如果你也经常投反对票)。因此,编辑问题以提高质量是明智的。
- @约翰内斯詹德嘿,请告诉我我做了什么。我不明白这个问题为什么被搁置。我没解释吗?拜托
- 请阅读"如何询问帮助"页面,尤其是如何创建一个最小、完整和可验证的示例,因为这正是导致问题结束的原因:没有尝试解决问题,没有代码,没有迹象表明您自己研究了问题。不要太震惊,一个封闭的问题不是世界末日,但是要编辑这个问题,使它符合规则,然后它有机会再次打开。
- @Johannesjander谢谢:-)我已经修改了
- 好的,现在请描述一下为什么您的代码不能工作(它是否产生错误,或者它是否不产生结果或错误的结果?)如果有任何错误,请共享错误类型或错误结果
- 请用实际代码替换该// code。你能给一个循环编码对回答毫无帮助。
- @Johannesjander完成
- 谢谢.这个问题正在重新开放的轨道上,我想一两天之内它就不应该再被"搁置"了。
- @约翰内斯詹德谢谢
您需要在日期之间迭代并检查日期
首先将日期转换为日期对象
1 2
| 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 |
现在重复它们
1 2 3 4 5 6
| 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之间。
- @罗布你是说,为什么不先数数星期,然后再数数剩下的几天呢?
- @罗布不是你说的更像泰迪乌斯吗?不要认为迭代天是一种效率低下的方法,除非有成千上万的差异。
- 我所说的冗长乏味,是指效率低下、速度慢,而且需要的重复次数比需要的要多得多。对于小范围而言,这可能无关紧要,但对于大范围而言,则可能无关紧要。(end - start) / msPerWeek | 0是周数,所以每天有很多周。那么,((end - start) % msPerWeek) / msPerDay | 0是剩余的天数,所以从结束日期算起,每个天数加一个。不管范围的长度如何,处理时间都应该相同。它可能会多一点(但不多)代码,但对它来说效率更高。
- @Rogg要找出周数,我首先必须计算出需要在日期之间迭代的天数。所以我不确定它会怎样更有效率。你能回答和分享怎么做吗?之后我们将比较性能:)
- 几乎所有你需要的代码都在我的注释中,考虑到结束和开始是日期,用每周毫秒数除以总的差异(7*8.64e7)。
- @即使时差是一小时,也可能会出现robg日差,即如果我在午夜11点检查。所以,毫秒差不是一个万无一失的。无论如何,请分享你的答案。然后我们可以比较这两种情况:)
- 行动计划只讨论日期,而不是时间。