[removed] calculate number of days in month for a given year

前端 未结 8 1863
一个人的身影
一个人的身影 2020-12-05 12:12

I have a HTML page with 3 dropdowns for the month, day and year and I was wondering if there was a way to populate the month drop down properly depending on the month and ye

相关标签:
8条回答
  • 2020-12-05 12:19

    Here's the one liner. Assuming you are saying January=1, February=2 etc..(being normal) Here's the leap year example:

    var y = 2012;
    var m = 2;
    var daysInMonth = new Date(y,m,1,-1).getDate();
    
    0 讨论(0)
  • 2020-12-05 12:24

    You can actually use this:

    var curdate = new Date(); DaysMonth = 32 - new Date(curdate.getYear(), curdate.getMonth(), 32).getDate();

    ;)

    0 讨论(0)
  • 2020-12-05 12:27

    As far as I know, there's no (neat) built-in function for that. I wrote this once:

    // note that month is 0-based, like in the Date object. Adjust if necessary.
    function getNumberOfDays(year, month) {
        var isLeap = ((year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0));
        return [31, (isLeap ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
    }
    
    0 讨论(0)
  • 2020-12-05 12:32

    You can play with date objects:

    var monthStart = new Date(year, month, 1);
    var monthEnd = new Date(year, month + 1, 1);
    var monthLength = (monthEnd - monthStart) / (1000 * 60 * 60 * 24)
    

    Arithmetic with Date objects gives a number of milliseconds.

    This will even work for December; the Date constructor handles out-of-range arguments by wrapping around.

    Note that month is zero-based (it must be between 0 and 11)

    0 讨论(0)
  • 2020-12-05 12:32
    Date.prototype.daysinMonth= function(){
    var d= new Date(this.getFullYear(), this.getMonth()+1, 0);
    return d.getDate();
    };
    
    function daysinMonthfromInput  (month, year) {
         return (new Date(year, month - 1, 1)).daysinMonth();
    };
    function fillallday (elem, month, year) {
         var options = null;
         var elementExists = document.getElementById(elem);
    
         if (elementExists != null) {
    
             this.removeOptions(elementExists);
             var opt = document.createElement('option');
             opt.value = "";
             opt.innerHTML = "---Day---";
             elementExists.appendChild(opt);
             if (month != "") {
                 if (typeof (year) === "undefined") {
                     year = new Date().getFullYear();
                 }
                 if (year == "") {
                     year = new Date().getFullYear();
                 }
                 var days = daysinMonthfromInput(month, year);
                 for (var i = 1; i <= days; i++) {
                     var opt = document.createElement('option');
                     opt.value = i;
                     opt.innerHTML = i;
                     elementExists.appendChild(opt);
                 }
             }
         }
    
     }
    
    0 讨论(0)
  • 2020-12-05 12:36
    Date.prototype.daysinMonth: function(){
        var d= new Date(this.getFullYear(), this.getMonth()+1, 0);
        return d.getDate();
    }
    
    function daysinMonthfromInput(month,year){
        return (new Date(year,month-1,1)).daysinMonth();
    }
    
    alert(daysinMonthfromInput(2,2011));
    
    0 讨论(0)
提交回复
热议问题