如何使用 JavaScript 获取每个月的天数

问题描述 投票:0回答:1

我正在使用 JavaScript 创建日历,需要能够滚动到下个月并获取该月的开始日期,并能够显示该月的所有日期。我可以在一月份执行此操作,但很困惑如何使其在向前或向后滚动时适用于每个月。我还可以滚动到下个月的名称,但对如何获取下个月的日期感到困惑。

var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 
'Septemeber', 'October', 'November', 'December']
var getMonths = document.querySelector('.twelvemonths');
var showMonth = document.querySelector('.show-month')
var showWeekDays = document.querySelector('.weekday');
var dateContainer = document.querySelector('.date-container');
var scrollRight = document.querySelector('.go-right');
var scrollLeft = document.querySelector('.go-left');
let weekDay = new Date();


let d = new Date();
let day = d.getDay();
let month = d.getMonth();
let year = d.getFullYear();

function getDaysInMonth(year, month){
    return new Date(year, month, 0).getDate()
}

const getDays = getDaysInMonth(year, month)

function drawDays(){
    for(i = 1; i <= getDays; i ++){
        let calendarDay = document.createElement('div')
        calendarDay.className = 'calendar-day';
        calendarDay.innerHTML = i;
        dateContainer.appendChild(calendarDay);
    }
}

scrollRight.addEventListener('click', () =>{

   if(month < 11){
    month ++;
   } else {
    month = 0;
   }  

   showMonth.innerHTML = months[month];   
})

scrollLeft.addEventListener('click', () =>{
   month--;
   if(month < 0){
    month = 11;
   }
    showMonth.innerHTML = months[month]
})

showMonth.innerHTML = months[month];
drawDays()

switch(day){
    case 0:
        day = "Sunday";
        break;
    case 1:
        day = "Monday";
        break;
    case 2:
        day = "Tuesday";
        break;
    case 3:
        day = "Wednesday";
        break;
    case 4:
        day = "Thursday";
        break;
    case 5:
        day = "Friday";
        break;
    case 6:
        day = "Saturday";
        break;
}
javascript date calendar
1个回答
0
投票

尝试使用此代码,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Calendar</title>
    <style>
       
    </style>
</head>
<body>
    <div class="calendar">
        <button class="go-left">Previous</button>
        <div class="show-month"></div>
        <button class="go-right">Next</button>
        <div class="date-container"></div>
    </div>

    <script>
        var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 
            'September', 'October', 'November', 'December'];
        var getMonths = document.querySelector('.twelvemonths');
        var showMonth = document.querySelector('.show-month');
        var dateContainer = document.querySelector('.date-container');
        var scrollRight = document.querySelector('.go-right');
        var scrollLeft = document.querySelector('.go-left');
        var currentDate = new Date();
        var currentYear = currentDate.getFullYear();
        var currentMonth = currentDate.getMonth();

        function updateCalendar(year, month) {
             dateContainer.innerHTML = '';
            showMonth.innerHTML = months[month] + ' ' + year;
            var firstDay = new Date(year, month, 1).getDay();
            var daysInMonth = new Date(year, month + 1, 0).getDate();
            var daysOfWeek = ['Sun', 'Mon', 'Tue','Wed','Thu','Fri','Sat'];
            for (var i = 0; i < daysOfWeek.length; i++) {
                var dayHeader = document.createElement('div');
                dayHeader.className = 'calendar-day-header';
                dayHeader.innerHTML = daysOfWeek[i];
                dateContainer.appendChild(dayHeader);
            }
            for (var day = 1; day <= daysInMonth; day++) {
                var calendarDay = document.createElement('div');
                calendarDay.className = 'calendar-day';
                calendarDay.innerHTML = day;
                dateContainer.appendChild(calendarDay);
            }
            for (var i = 0; i < firstDay; i++) {
                var emptyDay = document.createElement('div');
                emptyDay.className = 'calendar-day empty';
                dateContainer.insertBefore(emptyDay, dateContainer.firstChild);
            }
        }
        updateCalendar(currentYear, currentMonth);

        scrollRight.addEventListener('click', () => {
            if (currentMonth < 11) {
                currentMonth++;
            } else {
                currentMonth = 0;
                currentYear++;
            }
            updateCalendar(currentYear, currentMonth);
        });

        scrollLeft.addEventListener('click', () => {
            if (currentMonth > 0) {
                currentMonth--;
            } else {
                currentMonth = 11;
                currentYear--;
            }
            updateCalendar(currentYear, currentMonth);
        });
    </script>
</body>
</html>

© www.soinside.com 2019 - 2024. All rights reserved.