TypeORM не преобразует `Дату` в utc

#date #serialization #typeorm

Вопрос:

Давайте начнем с предоставления определения базы данных рассматриваемой сущности:

     @Column({ name: "last_seen", type: "timestamp", nullable: true })
    @Index()
    public lastSeen: Date | null = null;

    @CreateDateColumn({ name: "created", type: "timestamp", nullable: false })
    public created!: Date;
 

База данных-UTC, но сервер (в разработке) находится в часовом поясе «Азия/Тегеран». Насколько я знаю, TypeORM должен хранить даты в формате UTC и преобразовывать их обратно в местное время при извлечении.

Однако, и я думаю, что это происходит недавно, так как я не помню, чтобы у меня была подобная проблема в этом проекте, который продолжается уже 6 месяцев, но даты теперь хранятся в необработанном виде. Например, если я сохраню 10:00 4:30 в javascript для lastSeen свойства, оно будет сохранено недействительно как 10:00 .

С другой стороны, при чтении дат, которые автоматически создаются базой данных в «UTC», например, как в случае со created свойством, значение считывается в локальном часовом поясе, а не преобразуется из «UTC». В этих случаях данные правильно хранятся в базе данных в «UTC».

Есть ли вариант, который я здесь упускаю в отношении преобразования даты и времени с помощью TypeORM?

Комментарии:

1.Я думаю, что вы должны использовать timestamptz (метку времени с часовым поясом) вместо базового timestamp . Дополнительную информацию смотрите в этой статье. Более того, насколько я знаю, timestamptz это всегда лучший/предлагаемый подход.

2. Это не имеет смысла, поскольку TimestamptZ хранит данные о часовых поясах, и это может усложнить базу данных вместо того, чтобы помочь с ней.

3. @CarloCorradini хорошо, это имеет смысл, спасибо, постараюсь, здесь имена с меткой времени и timestamptz, мягко говоря, плохие.