如何检测javascript中的月份变化?
How to detect month change in javascript?
我正在使用 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>
This answer 应该让你完成一半:
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 有 built-in filters 来格式化日期。
Moment.js 是 really useful, too。
我正在使用 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>
This answer 应该让你完成一半:
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 有 built-in filters 来格式化日期。
Moment.js 是 really useful, too。