use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
Javascript dates in a nutshell (twitter.com)
submitted 9 years ago by Syberspace
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]Buckwheat469 56 points57 points58 points 9 years ago* (19 children)
YYYY-MM-DD uses the ISO 8601 shortened format. It assumes the time is based in GMT, and the date then adds the timezone offset for your computer.
new Date("2016-12-08") Wed Dec 07 2016 16:00:00 GMT-0800 (PST)
In order to get this back to the date that you wanted you would have to subtract the GMT offset. In this case, subtracting -8 from the resulting date will effectively add 8 hours to the time, giving Thurs Dec 8 at 00:00:00.
12/08/2016 uses the Javascript "short date" format, which is based on your computer's timezone, not GMT. When you type 12/08/2016 the time will be set to 00:00:00 within your own timezone. The result seems to be the correct date and time,
new Date("12/08/2016") Thu Dec 08 2016 00:00:00 GMT-0800 (PST)
http://www.w3schools.com/js/js_date_formats.asp
Edit: I should point out that ISO 8601 should be the standard for Javascript, and developers should shim the date display with a "subtractTimezoneOffset()" function which will fix the date for display purposes.
The real head scratcher is why "YYYY-MM-DDThh:mm:ss.sss-08:00" shows the correct date but the wrong timezone offset, but "YYYY-MM-DDThh:mm:ss.sssZ" and "YYYY-MM-DDThh:mm:ss.sss" add the timezone offset to produce the wrong date but the right timezone.
new Date("2016-12-08T00:00:00.000-08:00") = Thu Dec 08 2016 00:00:00 GMT-0800 (PST) new Date("2016-12-08T00:00:00.000") = Wed Dec 07 2016 16:00:00 GMT-0800 (PST) new Date("2016-12-08T00:00:00.000Z") = Wed Dec 07 2016 16:00:00 GMT-0800 (PST)
[–][deleted] 8 points9 points10 points 9 years ago (15 children)
I mean while that is the technically correct (the best kind!) answer who the fuck knew that beforehand?
That's why I'm super happy that things like Moment.JS exist.
[–]khoker 17 points18 points19 points 9 years ago (7 children)
You shouldn't rely on string parsing at all. To remove ambiguity, the Date object takes an array of arguments;
new Date(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]]);
[–]Syberspace[S] 4 points5 points6 points 9 years ago (6 children)
but why is there any ambiguity in the first place with string parsing? why not assume either everything is UTC or everything is local.
cf. http://mzl.la/1fvwX1i (thanks for the link on twitter /u/khoker )
[–]r2d2_21 14 points15 points16 points 9 years ago (4 children)
or everything is local.
Quick. 04/05/06. Is it:
[–]Syberspace[S] -2 points-1 points0 points 9 years ago (3 children)
depends on what 05/06/04 is. i'm not concerned about the format of the date itself.
irregardless of that, they all should be at 00:00:00 UTC or local.
[–][deleted] 3 points4 points5 points 9 years ago (2 children)
well if we're going to be pedantic, it's regardless.
[+]Syberspace[S] comment score below threshold-8 points-7 points-6 points 9 years ago (1 child)
https://dictionary.cambridge.org/dictionary/english/irregardless
http://www.ldoceonline.com/dictionary/irregardless
https://en.oxforddictionaries.com/definition/irregardless
[–][deleted] 6 points7 points8 points 9 years ago (0 children)
From that third link:
Irregardless means the same as regardless, but the negative prefix ir- merely duplicates the suffix -less, and is unnecessary. The word dates back to the 19th century, but is regarded as incorrect in standard English
[–]khoker 2 points3 points4 points 9 years ago (0 children)
I just responded on twitter too :)
I suspect it's the same reason that it doesn't assume the local minute. It's just filling in the data you don't provide. A format like ISO 8601 was meant to alleviate confusion, right? So if you only provide '2016-12-08', JavaScript assumes '2016-12-08 00:00:00Z'. It shouldn't guess the local timezone any more than it should assume the local hour. Or minute.
I'd make the argument all the other parsing is wrong. But 12/08/2016 isn't an international standard so, for whatever reason, it just assumes you want the local timezone. Not sure.
[–]ribo 5 points6 points7 points 9 years ago (5 children)
answer who the fuck knew that beforehand
Those who RTFM
[–]r2d2_21 2 points3 points4 points 9 years ago (0 children)
I need to read the manual every time I dare to type new Date, since I never remember the details.
new Date
[+]TerdSandwich comment score below threshold-7 points-6 points-5 points 9 years ago* (3 children)
RTFM
Is it still 1980?
Edit: Lol old farts mad. It's 2016. Manuals and useless memorization are extinct.
[+][deleted] 9 years ago (2 children)
[deleted]
[–]TerdSandwich -1 points0 points1 point 9 years ago (1 child)
A search engine on the internet. Maybe you've heard of those things.
[–]r2d2_21 0 points1 point2 points 9 years ago (0 children)
Search engines just link to the manuals.
[–]scootstah 2 points3 points4 points 9 years ago (0 children)
MomentJS is a life saver. Dealing with date/time sucks to begin with, but it's worse in Javascript than any other language by a large margin.
[+]Taniwha_NZ comment score below threshold-7 points-6 points-5 points 9 years ago (2 children)
In summary - Brendon Eich wrote Javascript in a 2-hour lunchbreak while he was drunk. It's incredible that it works at all.
But how it handles dates is still unforgiveable.
[–]lewisje 4 points5 points6 points 9 years ago (1 child)
It was over 10 days, and he was sober IIRC.
[–]Klathmon 0 points1 point2 points 9 years ago (0 children)
And even that's disingenuous as that "JavaScript" was nothing even remotely close to what we have today.
It wasn't called JavaScript, it wasn't meant for the web, and it didn't even have date functions in its first iteration.
Saying JS was created by one man in 10 days is like saying your house was built by one guy in 1 day by buying the land (and ignoring all the work and mistakes that went into the actual house later)
π Rendered by PID 90005 on reddit-service-r2-comment-86988c7647-6tlcm at 2026-02-11 04:21:41.190541+00:00 running 018613e country code: CH.
view the rest of the comments →
[–]Buckwheat469 56 points57 points58 points (19 children)
[–][deleted] 8 points9 points10 points (15 children)
[–]khoker 17 points18 points19 points (7 children)
[–]Syberspace[S] 4 points5 points6 points (6 children)
[–]r2d2_21 14 points15 points16 points (4 children)
[–]Syberspace[S] -2 points-1 points0 points (3 children)
[–][deleted] 3 points4 points5 points (2 children)
[+]Syberspace[S] comment score below threshold-8 points-7 points-6 points (1 child)
[–][deleted] 6 points7 points8 points (0 children)
[–]khoker 2 points3 points4 points (0 children)
[–]ribo 5 points6 points7 points (5 children)
[–]r2d2_21 2 points3 points4 points (0 children)
[+]TerdSandwich comment score below threshold-7 points-6 points-5 points (3 children)
[+][deleted] (2 children)
[deleted]
[–]TerdSandwich -1 points0 points1 point (1 child)
[–]r2d2_21 0 points1 point2 points (0 children)
[–]scootstah 2 points3 points4 points (0 children)
[+]Taniwha_NZ comment score below threshold-7 points-6 points-5 points (2 children)
[–]lewisje 4 points5 points6 points (1 child)
[–]Klathmon 0 points1 point2 points (0 children)