Угловая сериализация даты с определенным форматом в запросе POST - PullRequest
0 голосов
/ 30 октября 2018

Я новичок в Angular, и у меня есть несколько сомнений относительно того, как лучше всего сериализовать свойство Date объекта, добавленного в POST-запрос. Учитывая образец класса

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'. Я рассматривал разные способы, такие как определение декоратора (если возможно) или переопределение метода toJson(), но я не знаю, являются ли это единственными вариантами или есть лучшее решение ...

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Описывая проблему, с которой я столкнулся, я был, например, в GMT + 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. Надеюсь, это поможет.

0 голосов
/ 30 октября 2018

Использовать момент

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>
...