输出 YYYY-MM-DD 不是完整的日期字符串

Output YYYY-MM-DD not full date string

我想更新由 ngModel 链接的日期,使用 ngx-bootstrap 日期选择器,然后将其通过 PUT 请求发送到我的 Django 后端。但是日期格式不断从 YYYY-MM-DD (2019-08-13) 更改为完整的 javascript 日期字符串 (2019-08-13T23:00:00.000Z),这不会让我发送 PUT 请求.

我已经尝试了几乎所有我能找到的关于所有其他问题的方法,但它就是不起作用,没有什么能让我 select 它作为 YYYY-MM-DD 并在 PUT 请求中保持这种状态。非常感谢任何帮助。

<input class="form-control" 
#dp="bsDatepicker" 
bsDatepicker
[(ngModel)]="project.Start_Date2"
name="Start_Date2" 
[bsConfig]="{
    dateInputFormat: 'YYYY-MM-DD',
    isAnimated: true, 
    containerClass: 'theme-default' 
}">

我只想能够发送日期格式为 YYYY-MM-DD 的 PUT 请求。我不确定 ngx-bootstrap 是否会这样做,因为当我用它选择一个日期时,它会将它转换为长字符串,然后在 PUT 请求中不起作用。

日期格式不断恢复的原因正是因为您使用了 ngModel,即。双向绑定。 ngx-datepicker 不断将所选值推送到您的绑定变量 (Start_Date2)。没关系,符合预期。

我不知道你是如何处理你的 PUT 请求的,但你需要在请求函数中即时进行格式转换,或者引入另一个变量来保存你所需格式的日期.

我假设您使用 angular HttpClient 并且放置请求类似于

this.http.put('https://example.com/dates/1', project.Start_Date2)

所以你可以做的是创建一个转换函数并在 put 调用中转换格式。


function myDateFormatFunction(inputDate) {
  let d = new Date(inputDate) // this might not be needed if the date is already a Date() object
  // YYYY-MM-DD
  return d.getFullYear() + '-' + ('0' + (d.getMonth()+1)).slice(-2) + '-' + ('0' + d.getDate()).slice(-2); // the zeroes and slice weirdness is to have nice padding, borrowed from 
}

this.http.put('https://example.com/dates/1', myDateFormatFunction(project.Start_Date2))