我知道如何在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"
Run Code Online (Sandbox Code Playgroud)
这对js来说甚至可能吗?
T.J*_*der 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("-");
}
Run Code Online (Sandbox Code Playgroud)
请注意,setDate将正确处理滚动到下个月(如果需要,可以进行年度).
以上测试适用于IE6,IE7,IE8; Linux上的Chrome,Opera和Firefox; Windows上的Chrome,Opera,Firefox和Safari.
关于在JavaScript中支持这种格式的说明:JavaScript中的new Date(string)构造函数最近才具有可接受标准化的格式,如2009年12月发布的ECMAScript第5版.当浏览器支持时,您的格式将得到支持,但截至撰写本文时,没有发布的IE版本(甚至不是IE8)支持它.其他最近的浏览器大多数.
如果您使用jQuery 和 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);
Run Code Online (Sandbox Code Playgroud)
您可以以任何您想要的方式解析和格式化,最重要的是您不需要在 JS 库中添加新函数。
| 归档时间: |
|
| 查看次数: |
13309 次 |
| 最近记录: |