admin管理员组

文章数量:1300167

I've seen various versions of this question, but none of them answer my needs.

I want to create an ISODate for MongoDB and I'm using Node.js.

In Node, when I do:

console.log(Date());

I get:

Mon Sep 26 2016 15:17:04 GMT-0400 (EDT) <-- This is correct.

When I do:

console.log(new Date());

I get:

2016-09-26T19:17:04.731Z <- This is 4 hours ahead

My understanding of the way to do ISODATE is:

var isodate = new Date().toISOString()
console.log(isodate);

Which yields a time 4 hours ahead of "now".

My system date is correct. I run this one different machines, and I get the same results.

Can someone please explain why I'm getting a discrepancy in time?

I've seen various versions of this question, but none of them answer my needs.

I want to create an ISODate for MongoDB and I'm using Node.js.

In Node, when I do:

console.log(Date());

I get:

Mon Sep 26 2016 15:17:04 GMT-0400 (EDT) <-- This is correct.

When I do:

console.log(new Date());

I get:

2016-09-26T19:17:04.731Z <- This is 4 hours ahead

My understanding of the way to do ISODATE is:

var isodate = new Date().toISOString()
console.log(isodate);

Which yields a time 4 hours ahead of "now".

My system date is correct. I run this one different machines, and I get the same results.

Can someone please explain why I'm getting a discrepancy in time?

Share Improve this question edited Dec 13, 2019 at 18:30 Goran Stoyanov 2,3111 gold badge22 silver badges32 bronze badges asked Sep 26, 2016 at 19:26 user5161995user5161995 2
  • 4 It's not 4 hours ahead. That Z at the end of the string means that it's a UTC time stamp. You're 4 hours behind UTC, but the two dates represent the same point in universal time. – Pointy Commented Sep 26, 2016 at 19:28
  • this is probably your local timezone offset – chenchuk Commented Sep 26, 2016 at 19:30
Add a ment  | 

3 Answers 3

Reset to default 4

The difference is that 2016-09-26T19:17:04.731Z related to GMT0 timezone and Mon Sep 26 2016 15:17:04 GMT-0400 (EDT) to your local timezone. Both are point to the same time :)

You can read more about data formats and timezones in Wiki

With a basic definition to the difference between Date() and new Date() is :

  • Date() ignores any argument(s) passed to it and is equivalent of new Date().toISOstring()

  • new Date(Optional_arguments) creates an time type object in JS on which you can perform :

  • getTime() other Date.prototype functions listed on MDN Website

  • Date() is just a string representation of local time.

    • new Date() gives you a manipulatable object to fiddle around.

Notice the Z at the end of 2016-09-26T19:17:04.731Z? It stands for Zulu, meaning UTC timezone (which is GMT+000).

As you can see in your original date string, Mon Sep 26 2016 15:17:04 GMT-0400 (EDT) has a GMT-0400 timezone, which I guess is the local time where you live. So, in fact there is no problem, just different representations of the same time:

  • Date() creates a Local date
  • new Date() creates a UTC date

本文标签: JavaScriptdifference between Date()new Date()and ISODateStack Overflow