1

嗨,我是这两个框架的新手,我需要你的帮助!

因此,我将 Rest Django 用于后端,将 Angular 用于 Frontent,我也将 Angular 材料用于 DatePicker,尽管我将日期格式更改为 YYYY-MM-DD 到 DatePicker 我仍然收到错误消息“日期格式错误。请改用以下格式之一:YYYY-MM-DD。” 发送api时由服务器!

要更改 Angular 中的日期格式,我将此代码用于 app.module

import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
import { MomentDateModule, MomentDateAdapter } from '@angular/material-moment-adapter';

export const DateFormats = {
            parse: {
                dateInput: ['YYYY-MM-DD']
            },
            display: {
                dateInput: 'YYYY-MM-DD',
                monthYearLabel: 'MM YYYY',
                dateA11yLabel: 'LL',
                monthYearA11yLabel: 'MM YYYY',
            },
        };
providers: [
          { provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE] },
          { provide: MAT_DATE_FORMATS, useValue: DateFormats }
  ],

在 console.log('date',this.date) 之后查看我收到的 datepicker 输入的日期对象

date 
{…}
​
_d: Date Tue Aug 18 2020 00:00:00 GMT+0100 (UTC+01:00)
​
_i: Object { year: 2020, month: 7, date: 18 }
​
_isAMomentObject: true
​
_isUTC: false
​
_isValid: true
​
_locale: Object { _calendar: {…}, _longDateFormat: {…}, _invalidDate: "Invalid date", … }
​
_pf: Object { empty: false, overflow: -1, charsLeftOver: 0, … }
​
<prototype>: Object { add: createAdder(val, period), calendar: calendar$1(time, formats), clone: clone(), … }

你知道我该如何解决这个问题吗?

4

1 回答 1

0

您应该创建一个方法来修剪您的日期,删除时区和其他通知,然后在您的日期输入字段中调用该方法,例如 yourDateApp.component.ts 文件

trimDate(myDate){
  let strDate = JSON.stringfy(myDate.value)
  let newDate = strDate.substring(1, 11)
  //assign the new trimmed date to date value in ur form
  yourForm.controls['date_field'].setValue(newDate)
}

yourDateApp.component.html 文件 //像这样在 html 文件中调用你的函数

<input matInput (dateChange)="trimDate($event)">

这将接受日期将其修剪为 django 将识别它的方式

于 2021-01-14T12:42:29.800 回答