簡體   English   中英

如何在jQuery datepicker中獲得給定星期數的開始和結束日期

[英]How to get Start and End date given the week number in jQuery datepicker

jQuery DatePicker能夠根據所選日期返回周數。

如何根據所選日期獲得該周號的開始日期和結束日期?

目前,我有以下代碼,但我希望為上述要求提供一些改進的技巧。

 <script type="text/javascript">
    $(document).ready(function () {
         $('#' + '<%= weekTBox.ClientID %>').datepicker({
             showOn: "button",
             buttonImage: "images/calendar.gif",
             buttonImageOnly: true,
             constrainInput: true,
             showWeek: true,
             firstDay: 1,
             showOtherMonths: true, 
             selectOtherMonths: true                 
             ,onSelect: function (dateText, ui) {
                //desired functionality should be here...
                 $this.val($.datepicker.iso8601Week(new Date(dateText)));
             } 
         });
     });
</script>

給定年份和星期數,以下代碼返回一個日期,該日期是每周開始時的星期一(假設您希望星期從星期一開始)。

星期數基於一年中第一個星期四的星期,因此此功能查找1月1日,並確定星期1的第一天(星期一),然后將星期數* 7加到第一個星期一。主題周。 周末是下一個星期日,因此只需在日期上加上7。

// Returns a Date object for Monday at the
// start of the specified week
function dateFromWeekNumber(year, week) {
  var d = new Date(year, 0, 1);
  var dayNum = d.getDay();
  var diff = --week * 7;

  // If 1 Jan is Friday to Sunday, go to next week
  if (!dayNum || dayNum > 4) {
    diff += 7;
  }

  // Add required number of days
  d.setDate(d.getDate() - d.getDay() + ++diff);
  return d;
}

console.log(dateFromWeekNumber(2014, 1));  // Mon 30 Dec 2013
console.log(dateFromWeekNumber(2016, 1));  // Mon 04 Jan 2016
console.log(dateFromWeekNumber(2014, 30)); // Mon 21 Jul 2014

您可能要添加驗證,例如,該是一個大於零且小於54的整數。

編輯

修改為返回星期幾的星期一。

小提琴

 $( "#datepicker" ).datepicker({
    showWeek: true,
    firstDay: 1,
    onSelect: function(date){
     var d = new Date(date);
     var d1 = new Date(date);
        var index = d.getDay();

       // console.log(index)
        if(index == 0) {
         d.setDate(d.getDate() - 6);   
         d1.setDate(d1.getDate() - 2);   
        }
        else if(index == 1) {
         d.setDate(d.getDate());
         d1.setDate(d1.getDate()+4);               
        }
        else if(index != 1 && index > 0) {
          d.setDate(d.getDate() - (index - 1));
            d1.setDate(d1.getDate() + (index + 1));
            //console.log(d.getDate() - (index - 1))        
        }

        console.log('Week number::'+$.datepicker.iso8601Week(new Date(d)));
        console.log("start date::"+d)
        console.log("End date::"+d1)
        //$(this).val(d);
    }

     });
 });

我認為這對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM