JS 里如何取某一天的前后三天日期,如下有代码 ,请帮我修改一下
functionshowpricemin(){varselectdate="2011-11-02";varsdate=newDate();sdate.setYear(pa...
function showpricemin(){
var selectdate = "2011-11-02";
var sdate = new Date();
sdate.setYear(parseInt(selectdate.substring(0,4)));
sdate.setMonth(parseInt(selectdate.substring(5,7)));
sdate.setDate(parseInt(selectdate.substring(8,10)));
var firstdate = fromtodate(sdate,2);
alert(firstdate);
}
function fromtodate(sdate,day){
var dateTime=sdate.getTime()-1000*60*60*24*day;
var date=new Date();
date.setTime(dateTime);
var strYear=date.getFullYear();
var strMonth=date.getMonth();
var strDay=date.getDate();
if(strDay<10){
strDay="0"+strDay;
}
if(strMonth<10){
strMonth="0"+strMonth;
}
var flightdate = strYear+"-"+strMonth+"-"+strDay;
return flightdate;
}
这alert是 2011-10-31
但它只是2011-10-30 少了一天,问题就出现在这里了 展开
var selectdate = "2011-11-02";
var sdate = new Date();
sdate.setYear(parseInt(selectdate.substring(0,4)));
sdate.setMonth(parseInt(selectdate.substring(5,7)));
sdate.setDate(parseInt(selectdate.substring(8,10)));
var firstdate = fromtodate(sdate,2);
alert(firstdate);
}
function fromtodate(sdate,day){
var dateTime=sdate.getTime()-1000*60*60*24*day;
var date=new Date();
date.setTime(dateTime);
var strYear=date.getFullYear();
var strMonth=date.getMonth();
var strDay=date.getDate();
if(strDay<10){
strDay="0"+strDay;
}
if(strMonth<10){
strMonth="0"+strMonth;
}
var flightdate = strYear+"-"+strMonth+"-"+strDay;
return flightdate;
}
这alert是 2011-10-31
但它只是2011-10-30 少了一天,问题就出现在这里了 展开
2个回答
展开全部
setMonth(month)的参数有问题。month介于 0(一月) ~ 11(十二月) 之间。所以应该改为:
sdate.setMonth(parseInt(selectdate.substring(5,7))-1);
var strMonth=date.getMonth()+1;
dateObject.setMonth(month,day)
month 必需。一个表示月份的数值,该值介于 0(一月) ~ 11(十二月) 之间。
day 可选。一个表示月的某一天的数值,该值介于 1 ~ 31 之间(以本地时间计)。在 EMCAScript 标准化之前,不支持该参数。
另外,你这里还有一个bug。把截取出来的月份和日期转化为int型的时候,月份和日期可能出现以0开头的值,例如:07,09...,而以0开头的数会被javascript认为是八进制的数,如果值小于8不会有问题,但是如果值大于或等于8(08和09)的时候得到的结果就会不正常(等于0)。
sdate.setMonth(parseInt(selectdate.substring(5,7))-1);
var strMonth=date.getMonth()+1;
dateObject.setMonth(month,day)
month 必需。一个表示月份的数值,该值介于 0(一月) ~ 11(十二月) 之间。
day 可选。一个表示月的某一天的数值,该值介于 1 ~ 31 之间(以本地时间计)。在 EMCAScript 标准化之前,不支持该参数。
另外,你这里还有一个bug。把截取出来的月份和日期转化为int型的时候,月份和日期可能出现以0开头的值,例如:07,09...,而以0开头的数会被javascript认为是八进制的数,如果值小于8不会有问题,但是如果值大于或等于8(08和09)的时候得到的结果就会不正常(等于0)。
展开全部
<script language="javascript">
/* 得到日期年月日等加数字后的日期 */
Date.prototype.dateAdd = function(interval,number)
{
var d = this;
var k={'y':'FullYear', 'q':'Month', 'm':'Month', 'w':'Date', 'd':'Date', 'h':'Hours', 'n':'Minutes', 's':'Seconds', 'ms':'MilliSeconds'};
var n={'q':3, 'w':7};
eval('d.set'+k[interval]+'(d.get'+k[interval]+'()+'+((n[interval]||1)*number)+')');
return d;
}
function show(mydate){
return mydate.getFullYear()+"-"
+ (mydate.getMonth()+1)+"-"
+ mydate.getDate()+" "
+ mydate.getHours()+":"
+ mydate.getMinutes()+":"
+ mydate.getSeconds()
}
function showDay(mydate){
var dd = new Date(mydate);
alert(show(dd.dateAdd("d",-2)));
}
</script>
<input type="button" value="dateAdd" onclick="javascript:showDay('2011/11/2')">
/* 得到日期年月日等加数字后的日期 */
Date.prototype.dateAdd = function(interval,number)
{
var d = this;
var k={'y':'FullYear', 'q':'Month', 'm':'Month', 'w':'Date', 'd':'Date', 'h':'Hours', 'n':'Minutes', 's':'Seconds', 'ms':'MilliSeconds'};
var n={'q':3, 'w':7};
eval('d.set'+k[interval]+'(d.get'+k[interval]+'()+'+((n[interval]||1)*number)+')');
return d;
}
function show(mydate){
return mydate.getFullYear()+"-"
+ (mydate.getMonth()+1)+"-"
+ mydate.getDate()+" "
+ mydate.getHours()+":"
+ mydate.getMinutes()+":"
+ mydate.getSeconds()
}
function showDay(mydate){
var dd = new Date(mydate);
alert(show(dd.dateAdd("d",-2)));
}
</script>
<input type="button" value="dateAdd" onclick="javascript:showDay('2011/11/2')">
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询