Javascript 从停止日期开始递增和递减
这是我的控制器:Javascript 从停止日期开始递增和递减,javascript,html,angular,date,typescript,Javascript,Html,Angular,Date,Typescript,这是我的控制器: private day: any = ''; private add: number = 0; private remove: number = 0; private days: any = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]; dayBefore() { let now = new Date(); this.remov
private day: any = '';
private add: number = 0;
private remove: number = 0;
private days: any = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
dayBefore() {
let now = new Date();
this.remove += 1;
let newDate = this.decrementDays(now, this.remove);
this.day = this.days[newDate.getDay()];
}
dayAfter() {
let now = new Date();
this.add += 1;
let newDate = this.incrementDays(now, this.add);
this.day = this.days[newDate.getDay()];
}
dayToday() {
let now = new Date();
this.day = this.days[now.getDay()];
this.add = 0;
this.remove = 0;
}
decrementDays: any = function removeDay(date: any, days: any) {
return new Date(date.getFullYear(), date.getMonth(), date.getDate() - days, date.getHours(), date.getSeconds(), date.getMilliseconds());
};
incrementDays: any = function addDay(date: any, days: any) {
return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days, date.getHours(), date.getSeconds(), date.getMilliseconds());
};
HTML:
{{day}
问题是,尽管递增和递减都有效,但当我想在dayAfter()之后转到dayBefore()
时,我不会立即转到前一天的日期
如果我点击dayAfter()
它会把我带到周二
(如果今天是周一
),当我点击dayAfter()
它会把我带到周日
,而不是周一。我怎样才能解决这个问题?我知道为什么会这样。这是因为它从今天开始计数(星期一
),而不是从我停止计数的地方
谢谢大家。试试这个:
private day: any = '';
private add: number = 0;
private remove: number = 0;
private days: any = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
private today = new Date();
dayBefore() {
let newDate = this.decrementDays(1);
this.day = this.days[newDate.getDay()];
}
dayAfter() {
let newDate = this.incrementDays(1);
this.day = this.days[newDate.getDay()];
}
dayToday() {
this.today = new Date();
this.day = this.days[this.today.getDay()];
}
decrementDays: any = function removeDay(days: any) {
let date = this.today;
this.today = new Date(date.getFullYear(), date.getMonth(), date.getDate() - days, date.getHours(), date.getSeconds(), date.getMilliseconds());
return this.today;
};
incrementDays: any = function addDay(days: any) {
let date = this.today;
this.today = new Date(date.getFullYear(), date.getMonth(), date.getDate() + days, date.getHours(), date.getSeconds(), date.getMilliseconds());
return this.today;
};
这可以进一步重构,也可以简化。我刚做了一个快速修复。试试这个:
private day: any = '';
private add: number = 0;
private remove: number = 0;
private days: any = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
private today = new Date();
dayBefore() {
let newDate = this.decrementDays(1);
this.day = this.days[newDate.getDay()];
}
dayAfter() {
let newDate = this.incrementDays(1);
this.day = this.days[newDate.getDay()];
}
dayToday() {
this.today = new Date();
this.day = this.days[this.today.getDay()];
}
decrementDays: any = function removeDay(days: any) {
let date = this.today;
this.today = new Date(date.getFullYear(), date.getMonth(), date.getDate() - days, date.getHours(), date.getSeconds(), date.getMilliseconds());
return this.today;
};
incrementDays: any = function addDay(days: any) {
let date = this.today;
this.today = new Date(date.getFullYear(), date.getMonth(), date.getDate() + days, date.getHours(), date.getSeconds(), date.getMilliseconds());
return this.today;
};
@Component({
// boilerplate and ceremony
})
export class DayOfWeekComponent {
days = [
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"
];
dayOfWeek = new Date().getDay();
resetDayOfWeek() {
this.dayOfWeek = new Date().getDay();
}
offsetDayOfWeek(offset: number) {
let dayOfWeek = (this.dayOfWeek + offset) % 7;
if (dayOfWeek < 0) {
dayOfWeek += 7;
}
this.dayOfWeek = dayOfWeek;
}
}
这可以进一步重构,也可以简化。我刚刚做了一个快速修复。@Component({
@Component({
// boilerplate and ceremony
})
export class DayOfWeekComponent {
days = [
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"
];
dayOfWeek = new Date().getDay();
resetDayOfWeek() {
this.dayOfWeek = new Date().getDay();
}
offsetDayOfWeek(offset: number) {
let dayOfWeek = (this.dayOfWeek + offset) % 7;
if (dayOfWeek < 0) {
dayOfWeek += 7;
}
this.dayOfWeek = dayOfWeek;
}
}
//样板和仪式
})
导出类DayOfWeekComponent{
天数=[
“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”、“星期日”
];
dayOfWeek=新日期().getDay();
resetDayOfWeek(){
this.dayOfWeek=新日期().getDay();
}
offsetDayOfWeek(偏移量:编号){
设dayOfWeek=(this.dayOfWeek+offset)%7;
如果(星期日<0){
星期五+=7天;
}
this.dayOfWeek=dayOfWeek;
}
}
模板:
<ul>
<li (click)="offsetDayOfWeek(-1)">Previous</li>
<li (click)="resetDayOfWeek()">Today</li>
<li (click)="offsetDayOfWeek(1)">Next</li>
</ul>
<span>{{days[dayOfWeek]}}</span>
- Previous
- 今天
- 下一步
{{天[星期五]}
@组件({
//样板和仪式
})
导出类DayOfWeekComponent{
天数=[
“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”、“星期日”
];
dayOfWeek=新日期().getDay();
resetDayOfWeek(){
this.dayOfWeek=新日期().getDay();
}
offsetDayOfWeek(偏移量:编号){
设dayOfWeek=(this.dayOfWeek+offset)%7;
如果(星期日<0){
星期五+=7天;
}
this.dayOfWeek=dayOfWeek;
}
}
模板:
<ul>
<li (click)="offsetDayOfWeek(-1)">Previous</li>
<li (click)="resetDayOfWeek()">Today</li>
<li (click)="offsetDayOfWeek(1)">Next</li>
</ul>
<span>{{days[dayOfWeek]}}</span>
- Previous
- 今天
- 下一步
{{天[星期五]}
只是一句话,请不要写days:any=[“Sunday”…
您正在丢弃有价值的信息,并编写超出需要的代码。写days=[“Sunday”,…
相反。只使用一个变量来跟踪添加/删除了多少天。因此,不要使用两个变量add
和remove
只使用一个变量,并在dayBefore
和dayAfter
函数中逐个更改。给我一分钟,伙计们:)但是,它并没有解决我提出的问题。你我有太多的函数和变量。这基本上就像@Titus所说的。有增量和减量也是不必要的。只是一句话,请不要写days:any=[“Sunday”…
你在浪费有价值的信息,写的代码比你需要的要多。写days=[“Sunday”,…
相反。只使用一个变量来跟踪添加/删除了多少天。因此,不要使用两个变量add
和remove
只使用一个变量,并在dayBefore
和dayAfter
函数中逐个更改。给我一分钟,伙计们:)但是,它并没有解决我提出的问题。你我有太多的函数和变量。这基本上就像@Titus说的。有增量和减量也是不必要的。@eric.dummy你现在面临什么问题?@eric.dummy它传递了一个变量。我把它改成了一个常量。它有效吗?dayToday()不起作用,其他一切似乎都正常:)@eric.dummy您希望它始终是当前日期吗?@eric.dummy没问题:)@eric.dummy您现在面临什么问题?@eric.dummy它传递了一个变量。我将其更改为常量。它起作用了吗?dayToday()不起作用,其他一切似乎都很好:)@eric.dummy你希望它一直是今天吗?@eric.dummy没问题:)我有一个错误,因子是7而不是6:oI注意到了,修复了:)8天背后的逻辑是什么?很好,我也修复了。需要先取模。你不需要,它仍然有效,但现在是问题非常干净。:)谢谢。我有一个错误,系数是7而不是6:我注意到了,修复了。:)8天之后的逻辑是什么?很好,我也修复了。需要先取模数。你不需要,它仍然有效,但现在可能更干净。:)谢谢。