Skip to content Skip to sidebar Skip to footer

How To Disable Moment.js Daylight Timezone Conversion

It is possible to disable the daylight timezone conversion in moment.js? http://plnkr.co/edit/MjFelt?p=preview $scope.obj.date = moment('2016-06-03T04:00:00.000Z'); Basicall

Solution 1:

If you are saying that you want moment to display your date and time (which is UTC, as indicated by the 'Z'), exactly as is, you should use moment.utc:

moment.utc('2016-06-03T04:00:00.000Z').format()
"2016-06-03T04:00:00Z"

When you use the default moment constructor, as you are now, you are telling moment to convert your UTC time to local time, and this is why you are seeing a time difference. For instance, on my local machine (I am currently UTC-5) I get the following:

moment('2016-06-03T04:00:00.000Z').format()
"2016-06-02T23:00:00-05:00"

This question comes up quite a lot, so I wrote this blog post that explains moment's constructor functions and how it converts ISO8601 dates in detail: https://maggiepint.com/2016/05/14/moment-js-shows-the-wrong-date/

Solution 2:

In my case, I had a problem with timezone changing due to 'daylight saving time'.

I had the next period:

{
    "from": "2020-10-01 00:00:00 +0200",
    "to":"2020-11-01 00:00:00 +0100",
}

And I wanted to get:

{
    "from": "2020-10-01 00:00:00 +0200",
    "to":"2020-11-01 00:00:00 +0200",
}

My solution is to get current (local) timezone and set it to the both date moment:

const currentTzOffset = moment().utcOffset(); // getting current timezone offsetconst startToLocalZone = moment(from, yourDateFormat)
    .local() // just checking. not sure if this is necessary
    .utcOffset(currentTzOffset) // put your tz to here
    .format(yourDateFormat);
const endToLocalZone = moment(to, yourDateFormat)
    .local() // just checking. not sure if this is necessary
    .utcOffset(currentTzOffset) // put your tz to here
    .format(yourDateFormat);

console.log(startToLocalZone); // output: "2020-10-01 00:00:00 +0200"console.log(endToLocalZone); // output: "2020-11-01 00:00:00 +0200"

And dont forget to set your date format instead 'yourDateFormat'

Post a Comment for "How To Disable Moment.js Daylight Timezone Conversion"