Преобразование новой даты () в формат UTC в машинописи, угловой - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть запрос от angular, который отправляет дату на сервер.

const activationDate = new Date();

Мне нужно преобразовать это в формат даты UTC перед отправкой запроса

В моей модели у меня есть переменная Date для передачи даты на сервер

export class PersonDetails {
  id: string;
  activationDate?: Date;
}

Ответы [ 4 ]

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

Я создал трубу, как это

@Pipe({ name: 'UTCDate'})
export class UTCDatePipe implements PipeTransform  {
    constructor() {}
    transform(value) {
        if (value)  {
            return  moment.utc(value).format('YYYY MMMM DD');
        } else {
              return '';
        }
    }
}

И посмотреть так:

{{invoice.invoiceDate | UTCDate}}

и к этому app.module

import {UTCDatePipe} from "@app/utcDate.component";

@NgModule({
    declarations: [
        AppComponent,
        UTCDatePipe
    ],
0 голосов
/ 10 декабря 2018

Вы можете использовать функцию toISOString() ( MDN веб-документы ).

Часовой пояс всегда равен смещению UTC.

var activationDate = new Date().toISOString();
0 голосов
/ 10 декабря 2018

Хотя вышеприведенные решения верны, если вам нужно много играть с датой, вы можете использовать момент.js lib, которая может быть очень полезна.

Для получения дополнительной информации см. http://momentjs.com/docs/#/parsing/utc/.

1. npm install moment
2. import * as _moment from 'moment';
const moment = _moment;
const utcDate = moment.utc();
console.log(utcDate.format());
0 голосов
/ 10 декабря 2018
personModel: PersonDetail;    

const activationDate = new Date();

this.personModel.activationDate = new Date(activationDate.getUTCFullYear(),
                                            activationDate.getUTCMonth(),
                                            activationDate.getUTCDate(),
                                            activationDate.getUTCHours(),
                                            activationDate.getUTCMinutes(),
                                            activationDate.getUTCSeconds()
                                            );

ИЛИ Можно использовать отдельный метод для получения UTCDate

const activationDate = this.getNowUTC();    

private getNowUTC() {
  const now = new Date();
  return new Date(now.getTime() + (now.getTimezoneOffset() * 60000));
}

Хорошая статья о преобразовании DateTime

...