我知道如何在php中使用date()和mktime()函数,但不知道如何在javascript中完成同样的事情......
function incr_date(date_str){
//...magic here
return next_date_str;
}
var date_str = '2011-02-28';
console.log( incr_date(date_str) ); //want to output "2011-03-01"
这对js来说甚至可能吗?
答案 0 :(得分:10)
首先解析它,然后使用dt.setDate(dt.getDate() + 1)
。但是,您必须手动解析它,或者使用DateJS或类似的解析;并非所有主流浏览器都支持该格式(new Date(date_str)
无效可靠地跨浏览器;请参阅下面的注释。然后将其转换回您的格式。
这些方面的东西:
function incr_date(date_str){
var parts = date_str.split("-");
var dt = new Date(
parseInt(parts[0], 10), // year
parseInt(parts[1], 10) - 1, // month (starts with 0)
parseInt(parts[2], 10) // date
);
dt.setDate(dt.getDate() + 1);
parts[0] = "" + dt.getFullYear();
parts[1] = "" + (dt.getMonth() + 1);
if (parts[1].length < 2) {
parts[1] = "0" + parts[1];
}
parts[2] = "" + dt.getDate();
if (parts[2].length < 2) {
parts[2] = "0" + parts[2];
}
return parts.join("-");
}
请注意,setDate
将正确处理下一个月(如有必要,还有年份)。
以上测试适用于IE6,IE7,IE8; Linux上的Chrome,Opera和Firefox; Windows上的Chrome,Opera,Firefox和Safari。
关于在JavaScript中支持此格式的说明:自2009年12月发布的ECMAScript 5th edition起,JavaScript中的new Date(string)
构造函数最近才具有接受标准化的格式。您的格式将受支持当浏览器支持它时,但在撰写本文时,没有IE的发布版本(甚至IE8)都不支持它。其他最近的浏览器大多数都是。
答案 1 :(得分:4)
如果你正在使用 jQuery&amp; jQuery UI 然后使用以下内容:
var dt = $.datepicker.parseDate('yy-mm-dd', '2011-02-25');
dt.setDate(dt.getDate() + 1)
var dtNew = $.datepicker.formatDate('yy-mm-dd', dt);
答案 2 :(得分:3)
首先,您需要将日期字符串转换为Date对象。
var date = new Date('2011-02-28');
然后你需要在日期的一天添加一个。
date.setDate(d.getDate() + 1);
虽然这看起来可能会在2月29日结束,但它不会也会在3月1日给你。
答案 3 :(得分:1)
我会在这里使用date.js - http://www.datejs.com/
有很多处理此类事情的功能。
答案 4 :(得分:1)
我修改了这个优秀的答案https://stackoverflow.com/a/5116693/4021614来处理任意数量的递增和递减(使用此方法https://stackoverflow.com/a/25114400/4021614)。
function incrementDate(date_str, incrementor) {
var parts = date_str.split("-");
var dt = new Date(
parseInt(parts[0], 10), // year
parseInt(parts[1], 10) - 1, // month (starts with 0)
parseInt(parts[2], 10) // date
);
dt.setTime(dt.getTime() + incrementor * 86400000);
parts[0] = "" + dt.getFullYear();
parts[1] = "" + (dt.getMonth() + 1);
if (parts[1].length < 2) {
parts[1] = "0" + parts[1];
}
parts[2] = "" + dt.getDate();
if (parts[2].length < 2) {
parts[2] = "0" + parts[2];
}
return parts.join("-");
};
示例:
//increment by 7 days
incrementDate('2015-01-01', 7);
//returns '2015-01-08'
//decrement by 1 day
incrementDate('2015-01-01', -1);
//returns '2014-12-31'
答案 5 :(得分:0)
是。首先,您阅读日期并转换为日期对象,然后添加1天并返回结果
function incrementDate(date_str) {
var date = new Date(date_str);
date.setDate(date.getDate() + 1);
return date.getFullYear() + '-' + date.getMonth() + '-' + date.getDate();
}
javascript中的Date object本机可以解决因闰年等问题而产生的所有问题。
答案 6 :(得分:0)
我希望这会有所帮助
function incr_date(date_str,no_of_days_to_add){
var futureDate=new Date(date_str);
futureDate.setDate(new Date().getDate()+no_of_days_to_add);
var next_date_str= futureDate;
return next_date_str;
}