`
yuelangyc
  • 浏览: 448180 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Js获取日期、月初时的前天、昨天、今天、明天

 
阅读更多
        今天工作的时候用到了JS获取日期,在网上一搜罗一大堆,前天的日期就等于获取的日期减去两天就可以,都是类似这种的代码:

   
<script language="JavaScript" type="text/javascript"> 
function GetDateStr(AddDayCount) 
{ 
var dd = new Date(); 
dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期 
var y = dd.getYear(); 
var m = dd.getMonth()+1;//获取当前月份的日期 
var d = dd.getDate(); 
return y+"-"+m+"-"+d; 
} 
document.write("前天:"+GetDateStr(-2)); 
document.write("<br />昨天:"+GetDateStr(-1)); 
document.write("<br />今天:"+GetDateStr(0)); 
document.write("<br />明天:"+GetDateStr(1)); 
document.write("<br />后天:"+GetDateStr(2)); 
document.write("<br />大后天:"+GetDateStr(3)); 
</script> 


        看似没错,但是当月初的时候问题就出现了,如果今天是2012-07-02 那么结果出来的是 2012-07-00 这是不科学的,正确的方法应该是利用将某天的日期转换成毫秒数,然后减去或者加上N天的1000*60*60*24毫秒数,再将这个值通过setTime换成日期即可。

function getDay(day){
	   var today = new Date();
	   
	   var targetday_milliseconds=today.getTime() + 1000*60*60*24*day;        

	   today.setTime(targetday_milliseconds); //注意,这行是关键代码  
	   
	   var tYear = today.getFullYear();
	   var tMonth = today.getMonth();
	   var tDate = today.getDate();
	   tMonth = doHandleMonth(tMonth + 1);
	   tDate = doHandleMonth(tDate);
	   return tYear+"-"+tMonth+"-"+tDate;
}
function doHandleMonth(month){
	   var m = month;
	   if(month.toString().length == 1){
	      m = "0" + month;
	   }
	   return m;
}


        只要这样就不会出现不科学的日期了。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics