Constructing a date in a specific timezone [duplicate] - javascript

This question already has answers here:
How to initialize a JavaScript Date to a particular time zone
(20 answers)
How do I specify the time zone when creating a JavaScript Date?
(1 answer)
Closed 5 years ago.
Without using moment.js, is there a way to construct a date in a specific timezone.
For example, I have two strings:
var date = '2018-01-23';
var time = '12:00';
I can construct the date like so:
var constructedDate = new Date(date.substring(0,4), date.substring(5,7)-1, date.substring(8,10), time.substring(0,2), time.substring(3,5));
which provides output of:
Tue Jan 23 12:00:00 GMT+00:00 2018
However, I am looking for output in a particular timezone (e.g +11:00)
Tue Jan 23 12:00:00 GMT+11:00 2018
Alternatively, is there a way to offset the date -11 hours so when I use the GMT date in my application it will be correct.

Related

Simplify writing a date [duplicate]

This question already has answers here:
How do I format a date in JavaScript?
(68 answers)
Closed 2 years ago.
I would like to simplify the display of a date (2016-06-26 05:23:55) which on discord.js gives this:
Sun Jun 26 2016 05:23:55 GMT + 0200 (Central European Daylight Time)
I would like to have this : Saturday June 26, 2016 at 05:23
I'd suggest using a library such as date-fns to format the date.
have a look at their docs: https://date-fns.org/v2.16.1/docs/format
You don't have to, but you'll have to it manually (array of months, pick Xth month, ...)

JS Date YYYY-MM-DD Returning incorrect value [duplicate]

This question already has answers here:
Incorrect date shown in new Date() in JavaScript
(3 answers)
Why does Date.parse give incorrect results?
(11 answers)
Closed 2 years ago.
I have HTML Date inputs that return a string in the format of 'YYYY-MM-DD'
I then want to put this into the Date Constructor so that I can get it converted into ISOFormat (for use of Mongo Querying)
However, the results are unexpected.
Doing new Date('2020-06-25') returns "Wed Jun 24 2020 20:00:00 GMT-0400 (Eastern Daylight Time)". Note that this is the day prior. Why does this happen and how can I change this to get the current date? THanks
When you create a new Date object in JavaScript, it expects the argument to be in GMT. It then converts it to your local timezone GMT-0400, which explains why its 4 hours off. You can set the timezone by appending it to the date string: new Date('2020-06-25 GMT-0400') should give you "Thu Jun 25 2020 00:00:00 GMT-0400".

In JavaScript, when do/don't Dates get converted? [duplicate]

This question already has answers here:
different result for yyyy-mm-dd and yyyy/mm/dd in javascript when passed to "new Date" [duplicate]
(2 answers)
Closed 6 years ago.
I'm confused because typing the same date in a different format results in two different date outputs, the first converted and the second, not. Here is the code:
var x = new Date("2015-03-25"); // outputs Tue Mar 24 2015 17:00:00 GMT-0700 (PDT)
var y = new Date("03/25/2015"); // outputs Wed Mar 25 2015 00:00:00 GMT-0700 (PDT)
The way dates are parsed by browsers is a huge pile of unpredictable inconsistency. You should not attempt it. Here's the full rundown in case you're curious: http://dygraphs.com/date-formats.html
If you want consistent parsing you should implement it yourself or us a library that does it. Momentjs is widely used: http://momentjs.com/

Convert date string to date object so it can be used with moment [duplicate]

This question already has answers here:
“Deprecation warning: moment construction falls back to js Date” when trying to convert RFC2822 date in moment.js
(7 answers)
Closed 6 years ago.
I have a date string like this: "Mon Jul 18 2016 21:35:14 GMT+00:00" and would like to use this in moment to format it to "MM-DD-YYYY", it does that but throws a warning pointing back to this issue https://github.com/moment/moment/issues/1407
Is there a way that I can convert the above to a date object and then use it in moment for formatting something like:
moment(Mon Jul 18 2016 21:35:14 GMT+00:00).format('MM-DD-YYYY');
You should include the string and the format within the moment call:
var date_as_string = "Mon Jul 18 2016 21:35:14 GMT+00:00";
var current_format = "ddd MMM DD yyyy HH:mm:ss Z";
moment(date_as_string, current_format).format('MM-DD-YYYY');
You are telling the function what format your string is in so that it can parse it correctly.

Why is date being set one day earlier than expected? [duplicate]

This question already has answers here:
Is the Javascript date object always one day off?
(29 answers)
Closed 6 years ago.
var dateTest = new Date('2015-03-31');
console.log(dateTest);
Result:
Mon Mar 30 2015 20:00:00 GMT-0400 (Eastern Daylight Time)
However I expected this to be March 31. How might I do this?
Because it's setting the date according to UTC, and returning it with your local timezone offset. I'd recommend explicitly specifying the timezone offset, if that's what you need, or adding your timezone offset after the fact.
var d = new Date('2015-03-31T00:00:00-0400');
// or
var d = new Date('2015-03-31');
d.setMinutes(d.getMinutes() + d.getTimezoneOffset());
If you want it to be in UTC, you can call the toUTCString() method on it instead, which will give you the date you expect, albeit not in your timezone.

Categories

Resources