在AdonisJs裏面時間物件預設是使用luxon的DateTime,但使用上你會發現時間會跟現實差時區的八小時(小編人在台灣GM+8),解決辦法就是在環境變數上加上TZ變數(注意不是TimeZone),
// .env
TZ=Asia/Taipei
但是!沒錯別這麼快走,上面說到只有created_at跟updated_at,可能底層有針對這兩個變數做特別處理,所以會特別順利。
如果你有自行設置其他datetime欄位或timestamp欄位,例如小編昨天新增了一個sent_at欄位,結果就不會如預期,還是差八小時,那這問題到底在哪呢?
經過思考後我想起,在db的設置上似乎也有timezone的設置,雖然不知道有沒有關係但就姑且一試吧。
mysql: {
client: "mysql",
connection: {
host: Env.get("MYSQL_HOST"),
port: Env.get("MYSQL_PORT"),
user: Env.get("MYSQL_USER"),
password: Env.get("MYSQL_PASSWORD", ""),
database: Env.get("MYSQL_DB_NAME"),
// 加入 timezone,取自.env TZ
timezone: Env.get("TZ"),
},
// ...略
},