From a2712839d0d64b902b3ecf524b0d317c9c1f96b9 Mon Sep 17 00:00:00 2001 From: kittapath <> Date: Wed, 22 Oct 2025 23:20:48 +0700 Subject: [PATCH] update timezone --- src/app.ts | 4 ++++ src/interfaces/date-serializer.ts | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/interfaces/date-serializer.ts diff --git a/src/app.ts b/src/app.ts index 840d5de..b591ddc 100644 --- a/src/app.ts +++ b/src/app.ts @@ -10,10 +10,14 @@ import { AppDataSource } from "./database/data-source"; import { RegisterRoutes } from "./routes"; import { SalaryPeriodController } from "./controllers/SalaryPeriodController"; import logMiddleware from "./middlewares/logs"; +import { DateSerializer } from "./interfaces/date-serializer"; async function main() { await AppDataSource.initialize(); + // Setup custom Date serialization for local timezone + DateSerializer.setupDateSerialization(); + const app = express(); app.use( diff --git a/src/interfaces/date-serializer.ts b/src/interfaces/date-serializer.ts new file mode 100644 index 0000000..5c876ff --- /dev/null +++ b/src/interfaces/date-serializer.ts @@ -0,0 +1,24 @@ +// Custom Date serializer for local timezone +export class DateSerializer { + static toLocalTime(date: Date): string | null { + if (!date) return null; + + // Convert UTC date to Thailand timezone (+07:00) + const offset = 7 * 60; // Thailand is UTC+7 + const localTime = new Date(date.getTime() + offset * 60 * 1000); + + // Format as ISO string but replace Z with +07:00 + const isoString = localTime.toISOString(); + return isoString.replace("Z", "+07:00"); + } + + static setupDateSerialization() { + // Override Date.prototype.toJSON to use local time + Date.prototype.toJSON = function () { + const offset = 7 * 60; // Thailand timezone offset in minutes + const localTime = new Date(this.getTime() + offset * 60 * 1000); + const isoString = localTime.toISOString(); + return isoString.replace("Z", "+07:00"); + }; + } +}