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 少了一天,问题就出现在这里了
展开
 我来答
buhuireniio
2011-10-10 · TA获得超过170个赞
知道小有建树答主
回答量:122
采纳率:0%
帮助的人:52.5万
展开全部
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)。
bnx1976
2011-10-10 · TA获得超过161个赞
知道小有建树答主
回答量:359
采纳率:0%
帮助的人:310万
展开全部
<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')">
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式