Завършвате приложението си Node.js, качвате го на сървър, вероятно някоя облачна услуга като DigitalOcean, Heroku или UpCloud, стартирате го... и всички времеви функции са грешни! Разбира се, защото сървърът е в различна часова зона!

Но имате нужда от показания на времето във вашата собствена часова зона. Не искате да конвертирате всяка една върната стойност на вашия интерфейс. Как можете да накарате Node.js да върне правилното време, ако приемем, че е в същата часова зона като централата на вашата компания (което е нежното име на мазето на майка ви)?

Node.js обикновено получава часовата зона по подразбиране от операционната система. Това може да бъде заменено с променлива на средата. Просто създайте .env файл в корена на вашия проект (където се намира вашият index.js файл) и добавете:

TZ="America/Montreal"

Сега стартирайте console.log(Date.now()) и ще видите, че вашата часова зона току-що се е променила на източно стандартно време.

Ако трябва да промените часовата зона в движение, това е начинът:

process.env.TZ = "America/Montreal"

Виждал съм някои публикации, в които се твърди, че това не е надеждно, но никога не съм имал проблем с това. Ако знаете друго, моля, коментирайте.

Имената на часовите зони са стандартизирани. Уикипедия има списък с тях тук.