如何在 javascript 中检测月份变化

How to detect month change in javascript?

本文关键字:变化 检测 javascript      更新时间:2023-09-26

我正在使用javascript来获取当前日期和下一个7天。现在我正在尝试一种方法来检测两者之间的月份变化。我的意思是,如果当前日期是 12 月 31 日,那么之后的第二天将是 1 月。而不是如何获得新的月份,并在我的观点中显示两者。
更新:现在我找到了获得新月的方法。现在我需要在月底日期之后添加这个月。
我的意思是:12 月 30 日星期二、星期三 31 日、1 月 1 日星期四、星期五 2 ....
小提琴:http://jsfiddle.net/HB7LU/9763/
.JS:

 function GetDates(startDate, daysToAdd) {
        var aryDates = [];
        for(var i = 0; i <= daysToAdd; i++) {
            var currentDate = new Date();
            $scope.currentMonth= MonthAsString(currentDate.getMonth());
            currentDate.setDate(startDate.getDate() + i);
            aryDates.push(DayAsString(currentDate.getDay()) + " " + currentDate.getDate() + " " );
        }
        return aryDates;
    }

    function MonthAsString(monthIndex) {
        var d=new Date();
        var month=new Array();
        month[0]="Jan";
        month[1]="Feb";
        month[2]="March";
        month[3]="April";
        month[4]="May";
        month[5]="June";
        month[6]="July";
        month[7]="Aug";
        month[8]="Sep";
        month[9]="Oct";
        month[10]="Nov";
        month[11]="Dec";
        return month[monthIndex];
    }
    function DayAsString(dayIndex) {
        var weekdays = new Array(7);
        weekdays[0] = "SUN";
        weekdays[1] = "MON";
        weekdays[2] = "TUE";
        weekdays[3] = "WED";
        weekdays[4] = "THU";
        weekdays[5] = "FRI ";
        weekdays[6] = "SAT";
        return weekdays[dayIndex];
    }
    var startDate = new Date();
    var aryDates = GetDates(startDate, 7);
    console.log(aryDates);
    $scope.totalDays = aryDates;

.HTML:

 <div class="row" style="text-align:center;background-color: #930d14; color: white; height: 55px;">
            <div class="col" style="border-right: solid 1px #820d13;">
                <p style="transform: rotate(270deg);margin-top: 8px;font-size: 10px;font-weight: 600;text-transform: uppercase;">
                    {{currentMonth}}</p>
                <p ng-if="newMonth" style="transform: rotate(270deg);margin-top: 8px;font-size: 10px;font-weight: 600;text-transform: uppercase;">
                    {{newMonth}}</p>
            </div>

这个答案应该让你成功一半:

function addDays(theDate, days) {
    return new Date(theDate.getTime() + days*24*60*60*1000);
}
var newDate = addDays(new Date(), 5);

然后,您可以实例化两个不同的日期,并比较月份:

var today = new Date();
var newDate = addDays(new Date(), 7);
function addDays(theDate, days) {
    return new Date(today.getTime() + days*24*60*60*1000);
}
var monthChange = (today.getMonth() < newDate.getMonth()) 
    || (today.getMonth() === 12 && newDate.getMonth() === 1)
console.log(monthChange);

从那里,您需要使您的日期可读。 为此,您可以使用 .toUTCString() 将日期格式化为 UTC,或使用库,或采用自己的方法。 看起来AngularJS具有内置过滤器来格式化日期。

Moment.js也非常有用。