javascript - 从停止处开始递增和递减日期

标签 javascript html angular date typescript

这是我的 Controller :

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:

<ul>
    <li (click)="dayBefore()"></li>
    <li (click)="dayToday()"></li>
    <li (click)="dayAfter()"></li>
</ul>

<span>{{day}}</span>

问题是,虽然递增和递减有效,但当我想在 dayAfter() 之后转到 dayBefore() 时,我不会转到日期就在前一天。

如果我点击dayAfter(),它将带我到星期二(如果今天是星期一) 当我点击 dayBefore() 时,它会将我带到周日,而不是周一。我究竟该如何解决这个问题?我知道为什么会这样。这是因为它是从今天的日期(星期一)开始计数,而不是从我停止的地方开始计数。

谢谢大家。

最佳答案

@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;
  }
}

模板:

<ul>
    <li (click)="offsetDayOfWeek(-1)">Previous</li>
    <li (click)="resetDayOfWeek()">Today</li>
    <li (click)="offsetDayOfWeek(1)">Next</li>
</ul>

<span>{{days[dayOfWeek]}}</span>

https://plnkr.co/edit/7is6uMGtkvcQ5V4VzqYp?p=preview

关于javascript - 从停止处开始递增和递减日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43587511/

相关文章:

html - Firefox 中奇怪的 float 行为

javascript - 在 <body> 部分加载脚本

javascript - 获得正确值(value)的更好方法

javascript - MongoDB Cloud9 连接

c# - 使用 PuppeteerSharp 访问 windows.localStorage

找不到 URL 的 Angular 2 HTTP GET 404

javascript - Angular 中虚拟列表的性能优化

css - 更改 ion-datetime 值的颜色

javascript - 如何防止图像 map 区域点击传播到链接?

javascript - 如何在其赋值表达式中重用目标的值?