将 UTC 设置为默认日期时区
Posted
技术标签:
【中文标题】将 UTC 设置为默认日期时区【英文标题】:Setting UTC as default date timezone 【发布时间】:2020-07-08 16:22:18 【问题描述】:我已经成功安装并配置了 TypeORM;我可以添加新记录、搜索等。我正在尝试将默认时区设置为 UTC
4 小时...但没有成功
我已将节点 TZ 配置设置为 UTC
,当我打印 console.log(process.env.TZ)
时,它按预期返回 UTC
。
我做错了吗?我的“用户”实体代码:
import Entity, PrimaryGeneratedColumn, Unique, Column, CreateDateColumn, UpdateDateColumn, BaseEntity from "typeorm";
@Entity()
//@Unique(['email'])
export class User extends BaseEntity
@PrimaryGeneratedColumn("uuid")
id!: number;
@Column()
email!: string;
@Column()
password!: string;
@CreateDateColumn(name: 'created_at', type: 'timestamp')
createdAt!: Date;
@UpdateDateColumn(name: 'updated_at',type: 'timestamp')
updatedAt!: Date;
和连接配置:
name: 'default',
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: 'supersecret',
database: 'multichat',
timezone: 'Z',
syncronize: true,
logging: false,
entities: [
'/var/www/html/projects/sluy/multichat/api_express/src/database/entities/**/*.ts'
],
migrations: [
'/var/www/html/projects/sluy/multichat/api_express/src/database/migrations/**/*.ts'
],
subscribers: [
'/var/www/html/projects/sluy/multichat/api_express/src/database/subscribers/**/*.ts'
],
cli:
entitiesDir: '/var/www/html/projects/sluy/multichat/api_express/src/database/entities',
migrationsDir: '/var/www/html/projects/sluy/multichat/api_express/src/database/migrations',
subscribersDir: '/var/www/html/projects/sluy/multichat/api_express/src/database/subscribers'
【问题讨论】:
typeorm 连接属性doc 【参考方案1】:TypeORM 的连接选项timezone
似乎无法与 mysql 一起正常工作:
https://github.com/typeorm/typeorm/issues/5895.
可能发生的情况是您的连接正在从系统获取时区信息。你可以验证这个SELECT @@session.time_zone;
。
解决方案
对我有用的是在启动服务器时手动设置时区信息:
await manager.query(`SET GLOBAL time_zone = '+00:00';`)
await manager.query(`SET time_zone = '+00:00';`)
【讨论】:
以上是关于将 UTC 设置为默认日期时区的主要内容,如果未能解决你的问题,请参考以下文章