
I was recently working on an API which should return data for yesterday. I used normal date object in JS and extracted the date from that object. It worked fine locally and I deployed it to server.
It was returning the wrong date on the production server. This is when I realized that the server is in the US region and it is returning date as per the US timezone.
Now I had to get date based on timezone in JS. I tried searching online but most of the solutions were kind of vague and not really the ideal solutions.
Finally I had to use js-joda which is a really good date and time library in javascript. It was pretty easy to get date based on timezone using this library. Here’s how to do it!
var zdt = ZonedDateTime.now(ZoneId.of("UTC+05:30"));
All you need to do is specify the timezone in UTC offset or the time zone name. Here’s an example with timezone name
var zdt = ZonedDateTime.now(ZoneId.of("Europe/Paris"))
You can read the documentation of js-joda here – https://js-joda.github.io/js-joda/
Here’s my final code to get yesterday’s date for a specific time zone
var { ZoneId, ZonedDateTime } = require("@js-joda/core"); require("@js-joda/timezone"); const getYesterdaysDate = () => { let zdt = ZonedDateTime.now(ZoneId.of("UTC+05:30")); zdt = zdt.minusDays(1); let day = zdt.dayOfMonth(); let month = zdt.monthValue(); const year = zdt.year(); if (day < 10) { day = "0" + day; } if (month < 10) { month = "0" + month; } return `${day}-${month}-${year}`; };
- CSS shape-outside example to wrap text around image - January 7, 2021
- Behind the sun! Pure CSS Animation - January 5, 2021
- Unable to format code in VSCode on MacOS using shortcut (solved) - January 4, 2021
I loved the post! Really useful tip. Thank you so much for sharing.