日期选择器持续时间问题

时间:2018-05-30 10:16:03

标签: javascript angular typescript debugging

有某种"广告系列的持续时间"这意味着您可以选择月份的第一天和最后一天之间的日期。如果您选择不在月份的第一天和最后一天之间的日期,例如下个月的某个日期,则Backend API将返回"输入参数错误"。

当前的工作方式就像我选择日期选择器中的最后一个日期(月份的第30天),后端API将返回"输入参数错误"。 这意味着他将在下个月的第一天算上第30天。 我应该将日期选择更改为少一天。

问题是在代码中我应该减去1天" endDate" -property?

这个模式的HTML部分是这个日期选择器: (你可以在那里看到endDate,我想减去那个endDate为1天)

  <!-- startDate/endDate -->
        <div class="nano-f-r nano-f">
            <nano-date-picker [(startDate)]="campaignDto.dtoData.startDate"
                              [(endDate)]="campaignDto.dtoData.endDate"
                              [intervalMode]="campaignDto.id === 'new' ? dpIntervalFuture : dpIntervalBoth"
                              [maxIntervalDurationInMonths]="2"
                              style="height: 30px"></nano-date-picker>
        </div>
    </div>

纳米日期选择器组件:

   public isDaySelected(day: MonthDay): boolean {
    return this.isDateRange === true
        ? day.startDate === this.datePicker.startDate || day.endDate === this.datePicker.endDate
        : day.startDate === this.datePicker.startDate;
}

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

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


public setRange(day: MonthDay): void {
    if (this.isDateRange === true) {
        this.datePicker.setRange(day, () => this.onDatesChange())
    } else {
        this.datePicker.setSingleDate(day, () => this.onDatesChange())
    }
}

以下是日期选择器的外观:

enter image description here

1 个答案:

答案 0 :(得分:1)

您应该在ngOnChangesonDatesChange中减去一天。

修改

你应该在这里减去你的日期:

this.datePicker = new DatePicker(startDate, endDate);

这个结束日期需要这样减去:

endDate.setDate(endDate.getDate() - 1);
this.datePicker = new DatePicker(startDate, endDate);