Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

255
Views
Javascript getTime() delivers confusing results

I've searched a lot, but couldn't find an explanation for this, in my opinion confusing behavior of getTime(). The documentation states:

getTime() always uses UTC for time representation. For example, a client browser in one timezone, getTime() will be the same as a client browser in any other timezone.

According to this statement, my understanding is, that e.g.

1. new Date (Date.UTC(2021,8,1)).getTime() // UTC           Date 1.Sep.2021 00:00:00
2. new Date (2021,8,1).getTime()           // Local (UTC+1) Date 1.Sep.2021 00:00:00

should deliver the same amount of milliseconds. But the results I'm getting are these:

1. 1630454400000
2. 1630447200000 // 1 hour (3600000 ms) missing

Question A: Physically the same amount of time has passed since 1.1.1970. Why are the results not equal (also daylight saving matters!) like they should, according to the docs?

Question B: If the behavior is correct, why is there one hour missing? Shouldn't there be one hour more? Logically UTC+1 is one hour ahead.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Ok, I found out what caused the confusion. Thanks for all your help! Especially to Chris G who pointed me in the right direction. Here is what screwed up my brain ;-)

All who didn't understand why there is an issue at all, were most likely looking at this from a regular webrowser user's point of view. In that scenario if a user in UTC+1 opens a website which calls getTime() at lets say 1. Sept. 2021 07:00:00, that would result in this:

now Date ( 2021, 8, 1, 7, 0, 0 ).getTime()

Now if a second user does the same at exactly the same moment in UTC+0, this would result in:

now Date ( 2021, 8, 1, 6, 0, 0 ).getTime()

Then of course we are getting the same results! My problem was that I assumed that calling:

now Date ( 2021, 8, 1, 7, 0, 0 ).getTime()

in different time zones should give the same result. Which is NOT the case! Now you may ask why someone would need this. The reason is simple. I'm developing a little Gantt tool in Electron and there I need to compare/subtract dates. Of course I don't need the above to be true (deliver the same values), but I came accross this problem, because I was not getting divisable numbers of milliseconds when subtracting dates by converting them to ms with getTime(). I was expecting that according to the doc, which says that getTime() will give the same value in every time zone, to get an absolute value which is not influenced by time zones or daylight saving, for calculation. Thus I expected that e.g.:

now Date(2021,4,1,0,0,0).getTime() - now Date(2021,11,1,0,0,0).getTime()

Should give a number of milliseconds, which should be perfectly divisiable by 86400000 (one day). But that was not the case. The reason is that the second date is 1h behind because of daylight saving!

Conclusion

The statement in the doc is true when looking at the same point in time (e.g. UTC+0 06:00 and UTC+1 07:00), but not when looking at the same number of hours (e.g. UTC+0 07:00 and UTC+1 07:00). That was what confused me. Maybe this explanation helps others as well.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!