角度日期选择器和日期格式

时间:2018-07-24 08:39:41

标签: angular date datepicker

我无法正确地将日期与angular5一起使用

我从模拟的api中获取数据,其中生成的日期是这样的: 24/07/2018 00:00:00 因此,搜索或操作这些日期都没有问题。

api模拟中的世代示例:

 for (int i = 1; i <= NUMBER_OF_POLICIES; i++)
            {
                Policy lPolicy = new Policy { Id = i, Name = string.Concat("Policy number ", i), Date = DateTime.Now.AddDays(i) };

                p.Add(lPolicy);
            }

当我使用角度材质的DatePicker组件更新日期时出现问题。

使用选择器,日期像tis一样显示:

Mon Jul 30 2018 00:00:00 GMT+0200

所以当我更新商品时,日期是这样传递的:

updated item: {"id":1,"name":"Policy number 1","date":"2018-07-29T22:00:00.000Z"}

知道如何处理语言环境吗?

编辑:

这是我进行一些研究时遇到的问题:

enter image description here

3 个答案:

答案 0 :(得分:2)

使用时刻作为日期和时间,这将提供必要的格式。

https://momentjs.com/

momentjs具有不同的属性,可以以必需的格式获取时间和日期。

newDate =今天。今天

date = moment(this.newDate)

您还可以传递必要的格式,例如

date = moment(this.newDate).format('DD / MM / YYYY')

答案 1 :(得分:1)

您可以在组件本身中使用DatePipe,并使用pre-defined-format-options

格式化日期。

尝试一下

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

class Service {    
  constructor(private datePipe: DatePipe) {}    
  changeDate(date) {
    return this.datePipe.transform(date, 'yyyy-MM-dd');
  }
}

或者您也可以像这样格式化日期

var formatted = new DatePipe().transform(raw, 'yyyy-MM-dd');

答案 2 :(得分:0)

 const offset = p.date.getTimezoneOffset();
 const test = p.date.setMinutes(p.date.getMinutes() - offset);

console.log(test)返回:

updated item: {"id":1,"name":"Policy number 1","date":"2018-07-31T00:00:00.000Z"}

它也可以工作,但是“干净”吗?