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

本文介绍了一种使用JavaScript处理日期的方法,解决了直接加减天数可能导致日期格式错误的问题,并提供了一个实用的日期处理函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天工作的时候用到了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>   

这样写有个问题就是 如果今天是31号那么加1就变成了32号了
看似没错,但是当月初的时候问题就出现了,如果今天是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;  
}  

www.186886.top
liulei.186886.top

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值