如何从打字稿中的字符串中减去Day?

时间:2018-05-30 12:22:53

标签: javascript angular typescript

我需要帮助从endDate减去一天 - 但endDate是字符串。

试着用这个:

moment(this.endDate).subtract(1, 'day').format()

不起作用。

 public ngOnChanges(): void {
    const startDate = this.startDate ? moment(this.startDate).format() : moment().startOf('day').format();
    const endDate = this.endDate ? moment(this.endDate).format() : moment(startDate).endOf('day').format();
    this.datePicker = new DatePicker(startDate, endDate);
    this.setDatePicker();

    if (this.continiousDatesValue !== null) {
        this.continiousDatesValueMoment = moment(this.continiousDatesValue);
    }
    if (this.previousDatesValue !== null) {
        this.previousDatesValueMoment = moment(this.previousDatesValue);
    }
}

同样在这里我应该从" endDate"中减去一天。 - 这是字符串:

private onDatesChange(): void {
        this.startDateChange.emit(this.datePicker.startDate);
        this.endDateChange.emit(this.datePicker.endDate);
        this.startEndDateChange.emit({startDate: this.datePicker.startDate, endDate: this.datePicker.endDate});
        this.isOpen = false;
    }

2 个答案:

答案 0 :(得分:4)

将减去的日期设置为日期对象

let endDate = "2018-04-01 08:14:00";
let dateOb = new Date(endDate);
dateOb.setDate(dateOb.getDate() - 1);
console.log(dateOb);
// now you can use moment to parse to your desired format
//or 

endDate = dateOb.getFullYear() + "-" + ('0' + (dateOb.getMonth() + 1)).slice(-2) + "-" + ('0' + dateOb.getDate()).slice(-2) + " " + ('0' + dateOb.getHours()).slice(-2) + ":" + ('0' + dateOb.getMinutes()).slice(-2) + ":" + ( '0' + dateOb.getSeconds()).slice(-2);

// getMonth() starts from 0.


console.log(endDate)

答案 1 :(得分:1)

momentjs要求日期为MM DD YYYY格式或YYYY MM DD进行操作。 因此,请提供类似格式的日期,或者您可以使用Ashish Ranjan提出的解决方案。