问题描述
嗨,我是这两个框架的新手,需要您的帮助!
所以我将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)之后查看我收到的日期选择器输入的日期对象
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(),… }
你知道我该如何解决这个问题?
解决方法
您应该创建一个方法来修剪您的日期,删除时区和其他通知,然后在您的日期输入字段中调用该方法 像这样的东西 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)
}
您的DateApp.component.html 文件 //像这样在html文件中调用你的函数
<input matInput (dateChange)="trimDate($event)">
这将接受将日期修剪为 django 可以识别它的方式