如何计算和检查双周约会
How to calculate and check for a bi-weekly date
我真的需要你的帮助,
假设我的分界开始日期是:2016 年 12 月 19 日,由变量 x
定义
我如何编写一个 JavaScript 函数,以便它将当前日期与 x
和当前日期与从 [=12 起的 (14) 天的重复日期进行比较=] 由变量 y
.
定义
var y = recurrence is every 14 days, thereafter from the date (x) with no end date specified (unlimited)
例如
function() {
if (present date == x) { alert(true) }
if (present date == y) { alert(true) }
}
如果 Date.now() == 1482181410856
,从现在起 14 天将是 1482181410856 + (14 * 24 * 60 * 60 * 1000) == 1483391010856
。
let y = new Date(Date.now() + (14 * 24 * 60 * 60 * 1000));
console.log(y.toUTCString()); // "Mon, 02 Jan 2017 21:03:30 GMT"
假设您真的想比较精确 日期,即以毫秒为单位,那么:
var present_date = new Date();
if(present_date.getTime() === x.getTime()) alert("Today is the same date as x");
else {
var y = new Date(x.getTime());
y.setDate(y.getDate() + 14); // add 14 days
if(present_date.getTime() === y.getTime()) alert("Today is the same date as y");
}
但大多数时候我们希望将日期作为全天而不是毫秒进行比较,因此您必须比较 范围 (从午夜到 11:59PM )... 在那种情况下,我建议使用图书馆让您的生活更轻松 - 例如 moment.js...
希望对您有所帮助!
这可能是 Add +1 to current date 的副本。
如果您有一个开始日期,比如 2016 年 12 月 20 日,您可以通过简单地将日期加上 14 天来计算该日期之后的 14 天。然后您可以检查今天的日期是否是这些日期中的任何一个,例如
// Create a Date for 20 December, 2016 with time 00:00:00
var startDate = new Date(2016,11,20);
// Create a Date for the start + 14 days with time 00:00:00
var startPlus14 = new Date(startDate);
startPlus14.setDate(startPlus14.getDate() + 14);
// Get today and set the time to 00:00:00.000
var today = new Date();
today.setHours(0,0,0,0);
if (+today == +startDate) {
console.log('Today is the start date');
} else if (+today == +startPlus14) {
console.log('Today is 14 days after the start date');
} else {
console.log('Today is neither the start nor 14 days after the start');
}
您可以获得开始日期和当前日期之间的天数差异,然后检查该数字是否是 14 的倍数。
function treatAsUTC(date) {
var result = new Date(date);
result.setMinutes(result.getMinutes() - result.getTimezoneOffset());
return result;
}
function daysBetween(startDate, endDate) {
var millisecondsPerDay = 24 * 60 * 60 * 1000;
return Math.floor((treatAsUTC(endDate) - treatAsUTC(startDate)) / millisecondsPerDay);
}
var demarcationdate = new Date("2016-12-19"),
today = new Date(),
days = daysBetween(demarcationdate,today),
daystill = 14 - days%14,
rec = days%14==0,
d = new Date();
d.setDate(today.getDate() + daystill);
var nextDate = (d.getDate() + "/" + (d.getMonth() + 1) + "/" + d.getFullYear());
console.log("Days diff = "+days+". Recurs today = "+rec+". Next in "+daystill+" days ("+nextDate.toString()+").");
我真的需要你的帮助,
假设我的分界开始日期是:2016 年 12 月 19 日,由变量 x
我如何编写一个 JavaScript 函数,以便它将当前日期与 x
和当前日期与从 [=12 起的 (14) 天的重复日期进行比较=] 由变量 y
.
var y = recurrence is every 14 days, thereafter from the date (x) with no end date specified (unlimited)
例如
function() {
if (present date == x) { alert(true) }
if (present date == y) { alert(true) }
}
如果 Date.now() == 1482181410856
,从现在起 14 天将是 1482181410856 + (14 * 24 * 60 * 60 * 1000) == 1483391010856
。
let y = new Date(Date.now() + (14 * 24 * 60 * 60 * 1000));
console.log(y.toUTCString()); // "Mon, 02 Jan 2017 21:03:30 GMT"
假设您真的想比较精确 日期,即以毫秒为单位,那么:
var present_date = new Date();
if(present_date.getTime() === x.getTime()) alert("Today is the same date as x");
else {
var y = new Date(x.getTime());
y.setDate(y.getDate() + 14); // add 14 days
if(present_date.getTime() === y.getTime()) alert("Today is the same date as y");
}
但大多数时候我们希望将日期作为全天而不是毫秒进行比较,因此您必须比较 范围 (从午夜到 11:59PM )... 在那种情况下,我建议使用图书馆让您的生活更轻松 - 例如 moment.js...
希望对您有所帮助!
这可能是 Add +1 to current date 的副本。
如果您有一个开始日期,比如 2016 年 12 月 20 日,您可以通过简单地将日期加上 14 天来计算该日期之后的 14 天。然后您可以检查今天的日期是否是这些日期中的任何一个,例如
// Create a Date for 20 December, 2016 with time 00:00:00
var startDate = new Date(2016,11,20);
// Create a Date for the start + 14 days with time 00:00:00
var startPlus14 = new Date(startDate);
startPlus14.setDate(startPlus14.getDate() + 14);
// Get today and set the time to 00:00:00.000
var today = new Date();
today.setHours(0,0,0,0);
if (+today == +startDate) {
console.log('Today is the start date');
} else if (+today == +startPlus14) {
console.log('Today is 14 days after the start date');
} else {
console.log('Today is neither the start nor 14 days after the start');
}
您可以获得开始日期和当前日期之间的天数差异,然后检查该数字是否是 14 的倍数。
function treatAsUTC(date) {
var result = new Date(date);
result.setMinutes(result.getMinutes() - result.getTimezoneOffset());
return result;
}
function daysBetween(startDate, endDate) {
var millisecondsPerDay = 24 * 60 * 60 * 1000;
return Math.floor((treatAsUTC(endDate) - treatAsUTC(startDate)) / millisecondsPerDay);
}
var demarcationdate = new Date("2016-12-19"),
today = new Date(),
days = daysBetween(demarcationdate,today),
daystill = 14 - days%14,
rec = days%14==0,
d = new Date();
d.setDate(today.getDate() + daystill);
var nextDate = (d.getDate() + "/" + (d.getMonth() + 1) + "/" + d.getFullYear());
console.log("Days diff = "+days+". Recurs today = "+rec+". Next in "+daystill+" days ("+nextDate.toString()+").");