如何在 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>
这个答案应该让你成功一半:
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也非常有用。
相关文章:
- 检测数据的变化
- 如何检测和打印变化变量LESS
- 检测 DIV 的高度何时变化,而无需轮询或突变观察者
- 检测observableArray是否发生变化
- 检测Ionic中特定的应用程序状态变化
- 如何在呈现页面后使用 Java 脚本检测 dom 元素值的值是否有任何变化(例如,任何输入或复选框值更改)
- 使用 jquery 检测变量变化
- 如何动态检测浏览器视口大小的变化
- 角度2的变化检测是否总是从根部开始
- 变化检测中的角度2+GridStack错误
- jquery ui:检测输入中的首次时间变化
- 只有在检测到变化时才会报废
- 如何在JQuery中检测按钮值的变化
- Angular2指令:如何检测DOM变化
- 角度 2 服务中的变化检测
- Firefox中的Angular2变化检测无限循环
- angular2在变化检测后在画布上绘制图像
- angularjs 2 rc4变化检测:检查后表达发生变化
- Angular2:可观察对象内部的变化检测
- 帧源变化检测