momentjs toDate() - timezone gets reset
A cleaner approach to get a native Date object with time according to the timezone, using moment
would be following:
convertedDate = moment.utc(moment.tz(timezone).format('YYYY-MM-DDTHH:mm:ss')).toDate()
PS: assuming two things
- you have imported both
'moment'
and'moment-timezone'
.- value of
timezone
is given like'Asia/Kolkata'
instead of an offset value
So I wasn't very far off. The format needs to exclude timezone for it to work. This code finally worked how I needed it to.
convertedDate = new Date(moment().utcOffset('-4').format('YYYY-MM-DD HH:mm'));
This should work:
I have the same issue. Just get the Date as a string using the same approach that you are using. Let's say your date is, for example: '2018-08-05T10:00:00'.
Now you need the Date object with correct time. To convert String into object without messing around with timezones, Use getTimezoneOffset
:
var date = new Date('2016-08-25T00:00:00')
var userTimezoneOffset = date.getTimezoneOffset() * 60000;
new Date(date.getTime() - userTimezoneOffset);
getTimezoneOffset()
will return either negative or positive value. This must be subtracted to work in every location in the world.