比如今天是2012-12-13,我想用js获取1个月,3个月,6个月,一年之后的日期,该怎么写?并且是YYYY-mm-dd格式的var d = new Date(); d.setMonth(d.getMonth()+3);这样的格式不正确
<!DOCTYPE HTML> <html> <head> <meta charset="gb2312" /> <title></title> <style> input { width:200px; } </style> </head> <body> <select id="time"> <option value="0">请选择</option> <option value="1">一周前</option> <option value="2">一个月前</option> <option value="3">三个月前</option> <option value="4">半年前</option> <option value="5">一年前</option> <option value="6">一年后</option> </select> <input type="text" id="stime" value="选择的时间"/> <input type="text" id="etime" value="当前时间"/> <script> function $(el){ return typeof el == 'string' ? document.getElementById(el) : el; } var s = $('stime'); var e = $('etime'); $('time').onchange = function(){ var d = new Date(); e.value = d.toLocaleString().replace(/年|月/g, '-').replace('日', ''); switch( +this.value ){ case 1: s.value = setTime(d, {type:'d', value: -7}); break; case 2: s.value = setTime(d, {type:'M', value: -1}); break; case 3: s.value = setTime(d, {type:'M', value: -3}); break; case 4: s.value = setTime(d, {type:'M', value: -6}); break; case 5: s.value = setTime(d, {type:'y', value: -1}); break; case 6: s.value = setTime(d, {type:'y', value: 1}); break; } }
function setTime(d, opts){ if(!d) return; var t = opts.type || 'd', v = opts.value || 1; switch( t ){ case 'y': d.setFullYear( d.getFullYear() + v ); break; case 'M': d.setMonth( d.getMonth() + v ); break; case 'd': d.setDate( d.getDate() + v ); break; case 'h': d.setHours( d.getHours() + v ); break; case 'm': d.setMinutes( d.getMinutes() + v ); break; case 's': d.setSeconds( d.getSeconds() + v ); break; } return d.toLocaleString().replace(/年|月/g, '-').replace('日', ''); }
</script> </body> </html>
// n个月后的日期 function addmulMonth(dtstr, n) { var s = dtstr.split("-"); var yy = parseInt(s[0]); var mm = parseInt(s[1])-1 ; var dd = parseInt(s[2]); var dt = new Date(yy, mm, dd); dt.setMonth(dt.getMonth() + n); var month = parseInt(dt.getMonth()) + 1; return dt.getFullYear() + "-" + month + "-" + dd; } 问题解决了,看了上面的代码,自己改好了,多谢。
比如今天是2012-12-13,我想用js获取1个月,3个月,6个月,一年之后的日期,该怎么写?并且是YYYY-mm-dd格式的var d = new Date();
d.setMonth(d.getMonth()+3);这样的格式不正确
<!DOCTYPE HTML>
<html>
<head>
<meta charset="gb2312" />
<title></title>
<style>
input { width:200px; }
</style>
</head>
<body>
<select id="time">
<option value="0">请选择</option>
<option value="1">一周前</option>
<option value="2">一个月前</option>
<option value="3">三个月前</option>
<option value="4">半年前</option>
<option value="5">一年前</option>
<option value="6">一年后</option>
</select>
<input type="text" id="stime" value="选择的时间"/>
<input type="text" id="etime" value="当前时间"/>
<script>
function $(el){
return typeof el == 'string' ? document.getElementById(el) : el;
}
var s = $('stime');
var e = $('etime');
$('time').onchange = function(){
var d = new Date();
e.value = d.toLocaleString().replace(/年|月/g, '-').replace('日', '');
switch( +this.value ){
case 1:
s.value = setTime(d, {type:'d', value: -7});
break;
case 2:
s.value = setTime(d, {type:'M', value: -1});
break;
case 3:
s.value = setTime(d, {type:'M', value: -3});
break;
case 4:
s.value = setTime(d, {type:'M', value: -6});
break;
case 5:
s.value = setTime(d, {type:'y', value: -1});
break;
case 6:
s.value = setTime(d, {type:'y', value: 1});
break;
}
}
function setTime(d, opts){
if(!d) return;
var t = opts.type || 'd',
v = opts.value || 1;
switch( t ){
case 'y':
d.setFullYear( d.getFullYear() + v );
break;
case 'M':
d.setMonth( d.getMonth() + v );
break;
case 'd':
d.setDate( d.getDate() + v );
break;
case 'h':
d.setHours( d.getHours() + v );
break;
case 'm':
d.setMinutes( d.getMinutes() + v );
break;
case 's':
d.setSeconds( d.getSeconds() + v );
break;
}
return d.toLocaleString().replace(/年|月/g, '-').replace('日', '');
}
</script>
</body>
</html>
function addmulMonth(dtstr, n)
{
var s = dtstr.split("-");
var yy = parseInt(s[0]);
var mm = parseInt(s[1])-1 ;
var dd = parseInt(s[2]);
var dt = new Date(yy, mm, dd);
dt.setMonth(dt.getMonth() + n);
var month = parseInt(dt.getMonth()) + 1;
return dt.getFullYear() + "-" + month + "-" + dd;
} 问题解决了,看了上面的代码,自己改好了,多谢。