在POST请求中以特定格式对日期进行角度序列化日期

时间:2018-10-29 23:41:22

标签: json angular date json-serialization angular7

我是Angular的新手,我对将添加到POST请求中的对象的Date属性进行序列化的最佳方法有几个疑问。 给定示例类

export class MyClass{
    public dateProperty: Date;
}

服务中包含以下代码:

public addMyClass(myClass: MyClass): Observable<MyClass> {
    return this.http.post<MyClass>(this.apiBaseUrl, myClass);
}

我必须以以下格式'yyyy-MM-dd hh:mm'序列化Date。 我考虑了不同的方式,例如定义装饰器(如果可能)或覆盖toJson()方法,但是我不知道这些是唯一的选择还是有更好的解决方案...

2 个答案:

答案 0 :(得分:0)

使用时刻

npm install moment --save

然后为您服务

import * as moment from 'moment';

const dateTime = new Date();
console.log(moment(dateTime).format("YYYY-MM-DD HH:mm"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

答案 1 :(得分:0)

例如,描述我遇到的问题,例如我在格林尼治标准时间+1,只想保存日期,例如“ 2019-04-28T00:00:00 GMT + 01:00”,以及JSON序列化将日期更改为“ 2019-04-27T23:00:00.000Z”。基本上是发送错误的日期,我想您正面临类似的情况。

我发现需要等待一次才能为整个项目自定义序列化所有内容,然后再将其发送到服务器,这是通过覆盖数据对象上的toJSON函数来实现的:

Date.prototype.toJSON = function() {
  return moment(this, moment.ISO_8601 ).format();
};

我也在使用moment.js。希望对您有所帮助。