日期:2014-05-16  浏览次数:20392 次

给定一个日期,js如何判别这个日期是否为给定月的最后一天呢,比如说给定日期是2007-01-31那么用js判别31号是否为2007年1月的最后一天呢
给定一个日期,js如何判别这个日期是否为给定月的最后一天呢,比如说给定日期是2007-01-31那么用js判别31号是否为2007年1月的最后一天呢  


------解决方案--------------------
日期new Date,然后日期加一,new Date看新的月份是否和原月份相等
------解决方案--------------------

<script>
var sDay = "2007-01-31 ";
alert(isLastDay(sDay)) //true是最后一天
function isLastDay(inputDate)
{
var d = new Date(inputDate.replace(/\-/, "/ "));
var nd = new Date(d.getTime()+24*60*60*1000); //next day
return (d.getMonth()!=nd.getMonth())
}
</script>
------解决方案--------------------
依据:根据判断天的字符串找出下一个月的第一天,在下一月的第一天基础上减一天的时间即为这个月的最后一天。

var day2= "2007-2-28 ";
var arr=day2.split( "- ") //arr: year month date
function test(arr){
if(arr[1]==12){ //js中month是从0-11,所以如果是12月,下一个月就是1月,也就是0
arr[0]++;
arr[1]==0;
}
var date=new Date(arr[0],arr[1])
if(new Date(date.getTime()-24*60*60*1000).getDate()!=arr[2]) return false;
else return true;
}
------解决方案--------------------
var date=new Date(arr[0],arr[1]) //下一个月的第一天,上面的if(arr[1]==12)是处理下一个月在下一个年中的问题。
new Date(date.getTime()-24*60*60*1000).getDate();//在下一个月的第一天基础上减一天即为上一个月的最后一天。
date.getTime()-24*60*60*1000 是转化成日期的毫米表示方法。
------解决方案--------------------
<script>
var sDay = "2007-01-30 ";
alert(isLastDay(sDay))
function isLastDay(inputDate)
{
var d = new Date(inputDate.replace(/\-/, "/ "));
var nd =new Date(inputDate.replace(/\-/, "/ "));
nd.setDate(nd.getDate()+1);
return (d.getMonth()!=nd.getMonth())
}
</script>