我希望在用户按日期选择器以dd / mm / yy格式提交的任何日期之后的60天内找到dd / mm / Y格式的日期。 我试着寻找它,但我得到的是从今天的日期起60天! 请帮助!!!
答案 0 :(得分:0)
如果您想排除周末,请使用以下内容:
var startDate = "9-DEC-2011";
startDate = new Date(startDate.replace(/-/g, "/"));
var endDate = "", noOfDaysToAdd = 13, count = 0;
while(count < noOfDaysToAdd){
endDate = new Date(startDate.setDate(startDate.getDate() + 1));
if(endDate.getDay() != 0 && endDate.getDay() != 6){
//Date.getDay() gives weekday starting from 0(Sunday) to 6(Saturday)
count++;
}
}
// above code excludes weekends.
alert(endDate);//You can format this date as per your requirement
您可以参考以下问题:
Add no. of days in a date to get next date(excluding weekends)
如果您想要包含周末,请使用以下内容:
var date = new Date();
date.setDate(date.getDate() + 32);
// output will be Tue Jan 21 2014 15:55:56 GMT+0530 (India Standard Time)
答案 1 :(得分:0)
使用JavaScript日期对象的简单版本:
function toTheFuture(date, days){
var split = userInput.split("/"),
//Split up the date and then process it into a Date object
userDate = new Date(+split[2]+2000, +split[1]-1, +split[0]);
//Add your days!
userDate.setDate(userDate.getDate() + days);
//Return your new dd/mm/yyyy formatted string!
return addZero(userDate.getDate())+"/"+addZero(userDate.getMonth()+1)+"/"+userDate.getFullYear()
}
//Ensures that if getDate() returns 8 for example, we still get it to output 08
function addZero(num){
if(num<10){
num = "0"+num;
}
return ""+num;
}
toTheFuture("09/05/13", 60);
//Will return 08/07/2013
使用JavaScript日期对象比大多数人想要的更烦人,有相当多的库(例如MomentJS)可以简化它,就像你期望的那样工作
答案 2 :(得分:0)
这里有三个不同的子问题。首先,解析输入 dd / mm / yy格式化为适合进行日期算术的对象。 做+60天算术。以dd / mm / Y格式格式化结果。
Javascript有一个Date对象,可以很简单 在我看来,你需要算术。添加60天的日期是 很容易
givenDate.setDate(givenDate.getDate() + 60)
setDate方法负责超出范围值,请参阅
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setDate
对于解析,您可以从字符串中提取年,月和日 dd / mm / yy格式(基本上使用字符串split()方法,和 将三个值提供给Date构造函数,如
new Date(year, month, day)
对于格式化,您可以使用Date对象的getter函数进行构建 你的字符串。参见
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
完整代码:
function parse(dateStr) {
var parts = dateStr.split('/').map(function (digits) {
// Beware of leading zeroes...
return parseInt(digits, 10);
});
return new Date(1900 + parts[2], parts[1], parts[0]);
}
function format(date) {
var parts = [
date.getDate(),
date.getMonth(),
date.getYear() + 1900
];
if (parts[0] < 10) {
parts[0] = '0' + parts[0];
}
if (parts[1] < 10) {
parts[1] = '0' + parts[1];
}
return parts.join('/');
}
function add(date, days) {
date.setDate(date.getDate() + days);
return date;
}
console.log(format(add(parse('11/06/83'), 60)));
// Outputs: 09/08/1983