Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Comments on Why is this client code getting the wrong date for a few hours a day?
Post
Why is this client code getting the wrong date for a few hours a day?
Our web site has a widget that displays some date-based information that we retrieve from some JSON-formatted data (one object per date). We get the current date from the environment, possibly adjust it (see below), look up the right entry in the JSON, and display it. Most of the time this works right, but at certain times of day we see an off-by-one error.
About that adjustment: For purposes of our widget, the day does not start at midnight but at 8PM local time. (The widget is for an alternate calendar where the day starts at sunset. 8PM is a compromise because we are not going to look up actual sunset times in the client locale.) We therefore get the local date and time, and if it's after 8PM we increment the date before looking up the entry.
The behavior I have been seeing is:
- From midnight to about 8PM (my time), the information is correct.
- At 8PM the day rolls over to "tomorrow" as expected.
- At 9PM the day rolls over again, so it is now really wrong (one full day ahead of where it should be).
- At midnight it rolls back and is correct.
According to the documentation, the Javascript Date
class operates in local time so what we're doing should work fine. The objects in the JSON use YYYY-MM-DD date format and Date
doesn't by default, so we use toISOString()
to convert the local date into this format:
let now = new Date();
if (now.getHours() > 20) {
now.setDate(now.getDate() + 1);
}
now = now.toISOString().substr(0, 10);
// use that to look up the value
Why is it incrementing twice, making the value wrong for a few hours a day?
1 comment thread