【问题标题】:DatePicker submit the previous date and when clear date submit `1970-01-01`DatePicker 提交上一个日期,当清除日期提交 `1970-01-01`
【发布时间】:2019-08-02 08:57:35
【问题描述】:

我正在使用DatePicker 效果很好。

这个组件我只有两个问题。

首先:当我清除 DatePicker 并单击提交时,保存的数据1970-01-01。如何删除它?我想在清除输入时提交空日期。

第二:我把今天的日期 8/2/2019,在提交中保存上一个日期 8/1/2019

Demo

【问题讨论】:

标签: angular typescript datepicker angular-material


【解决方案1】:
  1. 当您清除日期时,值将更改为 null,并且您没有在模型构造函数中处理 null。

  2. 当您将日期转换为 ISO 字符串时,它将返回 8:30 小时。所以你会在选定的日期返回一天。

在您的 MyModel.ts 文件中添加以下内容

 export class MyModel {
fromdate: number;
todate: number;


  constructor(obj: any) {
    console.log();
      this.fromdate = obj.fromdate === null ? '' : obj && <any>(new Date(obj.fromdate)) !== "Invalid Date" && !isNaN(<any>new Date(obj.fromdate)) ? new Date(new Date(obj.fromdate).setDate(new Date(obj.fromdate).getDate()+1)).toISOString().slice(0, 10) : obj.fromdate || obj.fromdate || '';
  this.todate = obj.todate === null ? '' : obj && <any>(new Date(obj.todate)) !== "Invalid Date" && !isNaN(<any>new Date(obj.todate)) ? new Date(new Date(obj.todate).setDate(new Date(obj.todate).getDate()+1)).toISOString().slice(0, 10) : obj.todate || obj.todate || '';
  }
}

【讨论】:

  • 我看不出与我的模型有什么不同。你能编辑我的演示吗?
  • stackblitz 有问题要分享。用上面的代码替换你的 MyModel.ts 构造函数,这将解决你的第一个问题。
  • 我更新了我的答案,这将解决您的两个问题。
【解决方案2】:

您可以使用角度内置方法formatDate() 来格式化日期。

1)。从通用模块导入 formatDate()。

import { formatDate } from '@angular/common';

2).只需使用格式方法获取格式化日期。

formatDate(date, 'yyyy-MM-dd', 'en');

根据 Angular 文档 formatDate() 用于根据区域设置规则格式化日期。

formatDate(value: string | number | Date, format: string, locale: string, timezone?: string): string

它会返回字符串:格式化的日期字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 2011-09-09
    • 1970-01-01
    相关资源
    最近更新 更多