Отформатируйте дату и время JS, чтобы исправить формат ISO - PullRequest
0 голосов
/ 03 января 2019

Я уже несколько дней пытаюсь получить свой код на стороне сервера (C #), чтобы сохранить метку времени, отправленную через вызов API в Postgres.

Кажется, работает нормально, если я присоединяю DateTime.Now() к объекту передачи данных, но когда я пытаюсь проанализировать дату и время, отправленные клиентом, я получаю 400 с

**0: "The input was not valid."**. 

как мойответ.

Мои классы выглядят так:

TS:

export interface ArtistShows {
    showDate: string;
    venue: string;
    id?: string;
    bandsAlsoPlaying: Array<string>;
}

C #

public class ArtistShow
{
    public Guid Id { get; set; }
    public DateTime ShowDate { get; set; }
    public string Venue { get; set; }
    public string BandsAlsoPlaying { get; set; }

    public virtual Artist Artist { get; set; }
}

Метод, который отображает новую форму (без даты)) (TS)

private _mapNewShowForm(): ArtistShows {
    let showDate = this.newShowForm.get(this.newShowFormEnum.DATE).value;
    let convertedShowDate = new Date(showDate);

    return {
      bandsAlsoPlaying: [],
      showDate: convertedShowDate.toISOString(),
      venue: `${this.newShowForm.get(this.newShowFormEnum.VENUE).value}, ${this.newShowForm.get(this.newShowFormEnum.CITY).value}`
    };
}

Формат даты из запроса: "2019-01-04T00: 00: 00.000Z" Требуемый формат: "2018-12-29 20: 23: 22.667766" <- Датыхранится в PG как метка времени без часового пояса </p>

Мой вопрос: кто-нибудь знает, в каком формате я должен отправлять свою дату в бэкэнд (я слышал, что это ISO 8601)?Должен ли я что-то делать для Даты на клиенте?И как я могу преобразовать мою дату JS в дату, которая будет сохранять в PG?

Я также использую Microsoft Entity Framework Core с Postgres (если это поможет)

1 Ответ

0 голосов
/ 09 февраля 2019

используйте unix_timestamp в качестве основного формата и конвертируйте их в соответствии с вашими потребностями

получить метку времени Unix в c #:

var timestamp = new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds();

получить Datetime из метки времени unix в c #:

DateTime dt = DateTimeOffset.FromUnixTimeSeconds(1549741828).DateTime;

получить метку времени Unix в JavaScript:

let timestamp = parseInt(new Date().getTime()/1000);

получить Datetime из метки времени unix в c #:

let date = new Date(1549742450 * 1000)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...