前言

最近在做自己的一个记账项目,后端nestjs中使用typeorm的mysql。当添加记录时,发现所以时间都相差了8小时。
后面查了一下资料发现因为默认 timezone 是用 UTC 的。所以只需要设置成我们自己的时区即可。

解决方法

方法1

ormconfig.json

  1. {
  2. "type": "mysql",
  3. "host": "localhost",
  4. "port": 3306,
  5. "username": "",
  6. "password": "",
  7. "database": "development",
  8. "entities": [
  9. "dist/**/*.entity{.ts,.js}"
  10. ],
  11. "synchronize": true,
  12. "timezone": "+08:00" // 添加这一条
  13. }

方法2

修改mysql时区

  1. set time_zone = '+8:00';

方法3

如果是在docker启动的,修改docker的时区

  1. rm -rf /etc/localtime
  2. ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  3. date -R