TypeScript(Angular) Datetime To Date

Z.K*_*rik 3 typescript angular angular7

我收到此错误消息

指定的值“2019-04-13T00:00:00”不符合要求的格式“yyyy-MM-dd”。

我想将日期/时间更改为日期。

日期时间示例:2019-04-13T00:00:00

我想做的例子:2019-04-13

HTML

 <input
  class="form-control mr-sm-2"
  id="dates"
  name="achievement_date"
  [(ngModel)]="addItems.achievement_date"
  required
  type="date"
  placeholder="Tournament Date"
/>
Run Code Online (Sandbox Code Playgroud)

wen*_*jun 5

提供的第一个解决方案很棒,因为它使用 Vanilla JavaScript 解决了您的解决方案!

但是,我还有另外两个替代解决方案。

1) 这利用了 Angular 的内置DatePipe。您甚至可以传入各种 DateTime 格式。

import { DatePipe } from '@angular/common';
.
.
export class SampleComponent implements OnInit {   

  constructor(private datePipe: DatePipe) {
    this.addItems.achievement_date = datePipe.transform('2019-04-13T00:00:00', 'yyyy-MM-dd');
    // console.log(this.date)
  }

}
Run Code Online (Sandbox Code Playgroud)

请记住将 DatePipe 导入到正在使用它的模块中的提供程序。

import { DatePipe } from '@angular/common';
.
.
@NgModule({
  .
  .,
  providers: [
    DatePipe
  ]
})
Run Code Online (Sandbox Code Playgroud)

上面应该在输入字段上显示日期。我使用上述解决方案做了一个演示

2)格式日期。请注意,这可能不适用于早期版本的 Angular。到目前为止,我只在 Angular 7 上尝试和测试过它。

import {formatDate } from '@angular/common';
.
.
export class AppComponent  {

  date = undefined;

  constructor() {
   this.date = formatDate('2019-04-13T00:00:00', 'yyyy-MM-dd', 'en-US');
  }

}
Run Code Online (Sandbox Code Playgroud)

这是给你的另一个演示


mal*_*awi 2

这个实用函数是我的帮助

export const getDate = function (date: any): Date {
  const _date = new Date(date);
  return new Date(
    Date.UTC(_date.getFullYear(), _date.getMonth(), _date.getDate())
  );
};
Run Code Online (Sandbox Code Playgroud)

或另一种基于格式“yyyy-MM-dd”返回字符串值的方法

export const getDate = function (date: any): string{
  const _date = new Date(date);
  return `${_date.getFullYear()}-${_date.getMonth()}-${_date.getDate()}`;      
};
Run Code Online (Sandbox Code Playgroud)

在保存日期之前只需清理该值

this.addItems.achievement_date = getDate(this.addItems.achievement_date);
Run Code Online (Sandbox Code Playgroud)