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

本文介绍了一种使用JavaScript实现的日期选择器功能,包括自定义日期、预设日期范围的选择,并通过脚本自动填充日期值。适用于需要用户输入日期范围的网页应用。

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

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值