Angular 8将带有字符串日期的json响应转换为JS日期的方法?

Phi*_*ffi 7 angular-date-format angular

我知道 json 不会以特殊方式处理日期,而是将它们作为服务器中的字符串提供。有没有办法提供具有 ISO 日期属性的 json 对象响应,并将其映射到已经将日期属性映射为 JS 日期的类?

例子:

杰森响应:

{
    "data": {
        "id": 1,
        "name": "John",
        "surname": "Smith",
        "birthDate": "1986-05-04T22:59:59.000Z"
        "subscriptionDate": "2020-06-28T14:36:43.498Z"
    }
}
Run Code Online (Sandbox Code Playgroud)

我有这样的课程:

export class User {

    id: string;
    name: string;
    surname: string;
    birthDate: Date;
    subscriptionDate: Date;

}
Run Code Online (Sandbox Code Playgroud)

我的服务方式:

getUser(id: string): Observable<User> {
    return this.http.get<User>(`${this.UrlService}estabelecimentos/${id}`, { headers: this.authenticationService.jwt() }).catch(super.serviceError);
}
Run Code Online (Sandbox Code Playgroud)

但是当我在组件中使用它时,birthDate 和 subscriptionDate 始终被视为字符串。有没有办法将其转换为 JS 日期,而不必通过迭代 json 响应并修改对象来格式化每个请求中的日期?

lio*_*cat 4

简短的回答是否定的,因为 JSON 格式不允许日期类型。请参阅: https: //www.w3schools.com/JS/js_json_datatypes.asp

我认为除了将它们转换为 Date 对象之外你别无选择,而且考虑到你的字符串日期格式,它相对简单:

ndate = new Date("1986-05-04T22:59:59.000Z")
Run Code Online (Sandbox Code Playgroud)

  • 问题不在于将字符串转换为日期,而是手动对多个字段和类进行转换。 (2认同)
  • 我认为 Angular 具有诸如 http 拦截器之类的机制,可以拦截响应并修改数据。这就是我需要的。 (2认同)

归档时间:

查看次数:

10697 次

最近记录:

3 年,10 月 前