如何根据月从两个日期计算天数
JavaScript : How to calculate days count from two dates based on month
例如
var from_date = new Date('2014-8-28');
var to_date = new Date('2014-9-3');
从这两个日期范围,我需要计算no。按月计算的天数。
我怎样才能得到这个?
我的预期结果是,
[
{
"month" : 8,
"days" : 4 // In month of August 28, 29, 30 & 31 has totally 4 days
},
{
"month" : 9,
"days" : 3 // In month of September 1, 2 & 3 has totally 3 days
}
]
本着教学精神,见评语:
var stopDate = new Date("2014-09-04"); // One day AFTER the last date we care
// about
var results = []; // An array for our results, initially
// empty
var date = new Date("2014-08-28"); // Our starting date
var entry; // The "current" month's entry in the loop
while (date < stopDate) {
// Create a new entry if necessary.
// The `!entry` bit uses the fact that variables start out with the value
// `undefined`, and `undefined` is "falsey", so `!entry` will be true if
// we haven't put anything in `entry` yet. If we have, it's an object
// reference, and object references are "truthy", so `!entry` will be
// false. The second check is to see whether we've moved to a new month.
if (!entry || entry.month !== date.getMonth() + 1) {
// Create a new entry. This creates an object using an object initialiser
// (sometimes called an object "literal")
entry = {
month: date.getMonth() + 1, // +1 because `getMonth` uses 0 = January
days: 0 // Haven't counted any days yet
};
// Add it to the array
results.push(entry);
}
// Count this day
++entry.days;
// Move to next day
date.setDate(date.getDate() + 1); // JavaScript's `Date` object handles
// moving to the next month for you
}
关于"false "answers" true ":在大多数语言中,你只能使用布尔值(true或false)进行分支,但JavaScript允许将值强制为布尔值。"假"值是强制为假的值。它们是:undefined
, null
, NaN
, 0
, ""
,当然还有false
。
相关文章:
- 如何在javascript中获取两个日期之间的周六和周日的日期
- 如何用moment.js列出两个日期之间的所有月份
- 两个日期时间选择器
- 如何在JavaScript中比较两个日期
- Javascript两个日期选择器冲突
- 如何从日期范围选择器中获取两个日期
- JavaScript函数,用于计算两个日期之间的年、月和天数
- 再次使用JavaScript计算两个日期之间的天数
- Mongoose查询在两个日期时间之间提取数据
- 在Javascript中计算两个日期之间的工作日,节假日除外
- 两个日期之间的差异
- JavaScript-计算两个日期之间的天数(包括结束日期)
- 在 JavaScript 中单击函数时两个日期类型输入之间的差异的代码
- 如何比较 JavaScript 格式为 2011-jan-21 的两个日期
- 如何在javascript中计算两个日期时间之间的差异
- (Angular+Bootstrap)如何阻止两个日期选择器被同一按钮打开
- 两个日期之间的月份差异,计算月份的最后日期
- 如何在JavaScript中返回两个日期(当前日期和输入日期)之间的字符串差异
- Moment.js-两个日期的天数不同
- 如何在javascript中比较两个日期时间