JS获取任意日期(昨天,今天,明天,上周...)

function getDate(dates) {
    var dd = new Date();
    dd.setDate(dd.getDate() + dates);
    var y = dd.getFullYear();
    var m = dd.getMonth() + 1;
    var d = dd.getDate();

    return y + "-" + m + "-" + d;
}

function getMonday() {
    var d = new Date();
    var year = d.getFullYear();
    var month = d.getMonth() + 1;
    var date = d.getDate();

//
    var day = d.getDay();
    var monday = day != 0 ? day - 1 : 6; // 本周一与当前日期相差的天数

    return monday;
}

function getMonth(type, months) {
    var d = new Date();
    var year = d.getFullYear();
    var month = d.getMonth() + 1;

    if (months != 0) {
// 如果本月为12月,年份加1,月份为1,否则月份加1。
        if (month == 12 && months > 0) {
            year++;
            month = 1;
        } else if (month == 1 && months < 0) {
            year--;
            month = 12;
        } else {
            month = month + months;
        }
    }
    var date = d.getDate();
    var firstday = year + "-" + month + "-" + 1;
    var lastday = "";
    if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
        lastday = year + "-" + month + "-" + 31;
    } else if (month == 2) {
// 判断是否为闰年(能被4整除且不能被100整除 或 能被100整除且能被400整除)
        if ((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0))
        {
            lastday = year + "-" + month + "-" + 29;
        }
    else
        {
            lastday = year + "-" + month + "-" + 28;
        }
    } else {
        lastday = year + "-" + month + "-" + 30;
    }
    var day = "";
    if (type == "s") {
        day = firstday;
    } else {
        day = lastday;
    }
    return day;
}

function getQFMonth(month) {
    var quarterMonthStart = 0;
    var spring = 1; //
    var summer = 4; //
    var fall = 7;   //
    var winter = 10;//
    if (month < 3) {
        return spring;
    }
    if (month < 6) {
        return summer;
    }
    if (month < 9) {
        return fall;
    }
    return winter;
};

function getQF(type, months) {
    var d = new Date();
    var year = d.getFullYear();
    var month = d.getMonth() + 1;
    var qfmonth = getQFMonth(month);

    if (months != 0) {
        if (qfmonth == 10 && months > 0) {
            year++;
            qfmonth = 1;
        } else if (qfmonth == 1 && months < 0) {
            year--;
            qfmonth = 10;
        } else {
            qfmonth = qfmonth + months;
        }
    }

    var fd = year + "-" + qfmonth + "-" + 1;
    var ed = "";
    if (qfmonth == 1 || qfmonth == 10) {
        ed = year + "-" + (qfmonth + 2) + "-" + 31;
    } else {
        ed = year + "-" + (qfmonth + 2) + "-" + 30;
    }

    var qf = "";
    if (type == "s") {
        qf = fd;
    } else {
        qf = ed;
    }
    return qf;
}

function getYears(type, years) {
    var d = new Date();
    var year = d.getFullYear();

    var fd = (year + years) + "-" + 01 + "-" + 01;
    var ed = (year + years) + "-" + 12 + "-" + 31;

    var yr = "";
    if (type == "s") {
        yr = fd;
    } else {
        yr = ed;
    }
    return yr;
}
View Code

转自http://blog.sina.com.cn/s/blog_9e94b2c101017q56.html

jsp页面:
<tr>
<td class="td_s" bgcolor="#c0f0fb">
<select name="stdDateFilter" onchange='showDate(this.options[this.selectedIndex].value )'>
<option value="custom">自定义</option>
<option value="prevfy">上年</option>
<option value="thisfy">本年</option>
<option value="nextfy">下年</option>
<option value="prevfq">上季度</option>
<option value="thisfq">本季度</option>
<option value="nextfq">下季度</option>
<option value="yesterday">昨天</option>
<option value="today">今天</option>
<option value="tomorrow">明天</option>
<option value="lastweek">上星期</option>
<option value="thisweek">本星期</option>
<option value="nextweek">下星期</option>
<option value="lastmonth">上月</option>
<option selected value="thismonth">本月</option>
<option value="nextmonth">下月</option>>
</select>
</td>
<td  class="td_s"colspan="12" bgcolor="#c0f0fb">&nbsp;&nbsp;
开始日期: <input type="text" id="startTime" name="startTime" />
结束日期: <input type="text" id="endTime" name="endTime" />
&nbsp;&nbsp;<input type="submit" value="查询"/></td>
</tr>

<script type="text/javascript">
function showDate( type )
{
if (type!="custom")
{
   document.getElementByIdx_x_x_x("startTime").readOnly=true;
document.getElementByIdx_x_x_x("endTime").readOnly=true;
}
else
{
   document.getElementByIdx_x_x_x("startTime").readOnly=false;
document.getElementByIdx_x_x_x("endTime").readOnly=false;
}
if( type == "today" )// 当前日期
{
document.getElementByIdx_x_x_x("startTime").value = getDate(0);
document.getElementByIdx_x_x_x("endTime").value = getDate(0);
}
else if( type == "yesterday" )// 昨天
{
document.getElementByIdx_x_x_x("startTime").value = getDate(-1);
document.getElementByIdx_x_x_x("endTime").value = getDate(-1);
}
else if( type == "tomorrow" ) // 明天
{
document.getElementByIdx_x_x_x("startTime").value = getDate(1);
document.getElementByIdx_x_x_x("endTime").value = getDate(1);
}
else if( type == "thisweek" )// 本周
{
document.getElementByIdx_x_x_x("startTime").value = getDate(-monday);
document.getElementByIdx_x_x_x("endTime").value = getDate(-monday+6);
}
else if( type == "lastweek" )// 上周
{
document.getElementByIdx_x_x_x("startTime").value = getDate(-monday-7);
document.getElementByIdx_x_x_x("endTime").value = getDate(-monday-1);
}
else if( type == "nextweek" )// 下周
{
document.getElementByIdx_x_x_x("startTime").value = getDate(-monday+7);
document.getElementByIdx_x_x_x("endTime").value = getDate(-monday+13);
}
else if( type == "thismonth" )// 本月
{
document.getElementByIdx_x_x_x("startTime").value = getMonth("s",0);
document.getElementByIdx_x_x_x("endTime").value = getMonth("e",0);
}
else if( type == "lastmonth" )// 上个月
{
document.getElementByIdx_x_x_x("startTime").value = getMonth("s",-1);
document.getElementByIdx_x_x_x("endTime").value = getMonth("e",-1);
}
else if( type == "nextmonth" )// 下个月
{
document.getElementByIdx_x_x_x("startTime").value = getMonth("s",1);
document.getElementByIdx_x_x_x("endTime").value = getMonth("e",1);
}
else if( type == "thisfy" )// 本年
{
document.getElementByIdx_x_x_x("startTime").value = getYears("s",0);
document.getElementByIdx_x_x_x("endTime").value = getYears("e",0);
}
else if( type == "prevfy" )// 去年
{
document.getElementByIdx_x_x_x("startTime").value = getYears("s",-1);
document.getElementByIdx_x_x_x("endTime").value = getYears("e",-1);
}
else if( type == "nextfy" )// 明年
{
document.getElementByIdx_x_x_x("startTime").value = getYears("s",1);
document.getElementByIdx_x_x_x("endTime").value = getYears("e",1);
}
else if( type == "nextfq" )// 下季度
{
document.getElementByIdx_x_x_x("startTime").value = getQF("s",3);
document.getElementByIdx_x_x_x("endTime").value = getQF("E",3);
}
else if( type == "prevfq" )// 上季度
{
document.getElementByIdx_x_x_x("startTime").value = getQF("s",-3);
document.getElementByIdx_x_x_x("endTime").value = getQF("E",-3);
}
else if( type == "thisfq" )// 本季度
{
document.getElementByIdx_x_x_x("startTime").value = getQF("s",0);
document.getElementByIdx_x_x_x("endTime").value = getQF("e",0);
}
else
{
document.getElementByIdx_x_x_x("startTime").value = "";
document.getElementByIdx_x_x_x("endTime").value = "";
}
}
</script>

js代码:
function getDate(dates){
var dd = new Date();
    dd.setDate(dd.getDate()+dates);
    var y = dd.getFullYear();
    var m = dd.getMonth()+1;
    var d = dd.getDate();
    
return y+"-"+m+"-"+d;
}

function getMonday(){
var d = new Date();
var year = d.getFullYear();
    var month = d.getMonth()+1;
    var date = d.getDate();

//
var day=d.getDay();
var monday = day!=0?day-1:6; // 本周一与当前日期相差的天数

return monday;
}

function getMonth(type,months){
var d = new Date();
var year = d.getFullYear();
var month = d.getMonth()+1;

if(months!=0){
// 如果本月为12月,年份加1,月份为1,否则月份加1。
if(month==12 && months>0){
year++;month=1;
}else if(month==1 && months<0){
year--;month=12;
}else{
month = month+months;
}
}
    var date = d.getDate();
    var firstday=year+"-"+month+"-"+1;
var lastday="";
if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){
lastday = year+"-"+month+"-"+31;
}else if(month==2){
// 判断是否为闰年(能被4整除且不能被100整除 或 能被100整除且能被400整除)
if((year%4==0 && year0!=0)||(year0==0 && year@0==0)){
lastday = year+"-"+month+"-"+29;
}else{
lastday = year+"-"+month+"-"+28;
}
}else{
lastday = year+"-"+month+"-"+30;
}
var day = "";
if(type=="s"){
day = firstday;
}else{
day = lastday;
}
return day;
}

function getQFMonth(month){
var quarterMonthStart=0; 
var spring=1; //
var summer=4; //
var fall=7;   //
var winter=10;//
if(month<3){ return spring; } 
if(month<6){ return summer; } 
if(month<9){ return fall; } 
return winter; 
}; 

function getQF(type,months){
var d = new Date();
var year = d.getFullYear();
    var month = d.getMonth()+1;
    var qfmonth = getQFMonth(month);

    if(months!=0){
    if(qfmonth==10 && months>0){
    year++;qfmonth=1;
    }else if(qfmonth==1 && months<0){
    year--;qfmonth=10;
    }else{
    qfmonth = qfmonth+months;
    }
    }
    
    var fd = year+"-"+qfmonth+"-"+1;
    var ed = "";
    if(qfmonth==1 || qfmonth==10){
ed = year+"-"+(qfmonth+2)+"-"+31;
    }else{
ed = year+"-"+(qfmonth+2)+"-"+30;
    }

    var qf = "";
if(type=="s"){
qf = fd;
}else{
qf = ed;
}
return qf;
}

function getYears(type,years){
var d = new Date();
var year = d.getFullYear();

    var fd = (year+years)+"-"+01+"-"+01;
    var ed = (year+years)+"-"+12+"-"+31;

    var yr = "";
if(type=="s"){
yr = fd;
}else{
yr = ed;
}
return yr;
}

 

posted @ 2013-10-24 18:04  玢棂  阅读(1439)  评论(0)    收藏  举报