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?
Date() returns an implementation dependent string representing the current date and time. new Date() returns a Date object that represents the current date and time. ;-) Yeah, I know.
The toISOString() method returns a string in simplified extended ISO format (ISO 8601), which is always 24 or 27 characters long ( YYYY-MM-DDTHH:mm:ss.sssZ or ±YYYYYY-MM-DDTHH:mm:ss.sssZ , respectively). The timezone is always zero UTC offset, as denoted by the suffix Z .
toISOString() provides millisecond values, whereas . toUTCString() does not.
toISOString() method is used to convert the given date object's contents into a string in ISO format (ISO 8601) i.e, in the form of (YYYY-MM-DDTHH:mm:ss. sssZ or ±YYYYYY-MM-DDTHH:mm:ss. sssZ). The date object is created using date() constructor.
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 datenew Date()
creates a UTC dateIf you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With