为什么 Angular Datepicker 发送错误的日期?

Why Angular Datepicker sends wrong date?

我有日期选择器:

    <input
        type="text"
        formControlName="startDate"
        [ngClass]="{ 'has-error': form.get('startDate').invalid }"
        [matDatepicker]="picker"
        class="materialDatePickerInput"
        placeholder="{{ 'select_date' | translate }}"
      />
      <mat-datepicker-toggle
        matSuffix
        [for]="picker"
      ></mat-datepicker-toggle>
      <mat-datepicker #picker></mat-datepicker>

我从日期选择器中选择了日期:01.01.2000,但它像这样发送到服务器:

1999-12-31T20:00:00.000Z

为什么转换成错误的日期?

没有。正如评论中提到的,这是一个时区问题。让我解释一下。

您正在服务器端获取 UTC 格式的时间,这大部分是正确的。我们倾向于这样做,以便我们可以以特定格式(通常以滴答为单位)存储时间,这样我们就可以对其进行数学运算而不必担心转换。

我猜你自己的时区是UTC + 2。所以你选择一个日期,日期选择器选择你自己时区时间为00的那一天,然后在你的后端转换时间2小时不见了。

这不是另一个日期或错误的日期,它只是另一个时区。

如果您需要日期时间,那么您需要决定在您的前端和后端选择什么时区/语言环境。