Moment-timezone: Display time with different timezone giving wrong value using moment

Created on 12 Jun 2018  路  1Comment  路  Source: moment/moment-timezone

I want to display time with 3 different time zone.

eg. Considering "America/Mexico_City" as standard.
**1. "America/New_York" is 1 hr ahead of Mexico_City

  1. "America/Los_Angeles" is 2 hrs behind of Mexico_City**

But I am getting exactly opposite o/p -> New York showing 1 hr behind && Los Angeles is 2 hrs ahead.
o/p ->
Mexico_City-> normal ->Jun 11, 2018 19:12 PM
New_York-> 1 hr ->Jun 11, 2018 18:12 PM
Los_Angeles-> 2hr ->Jun 11, 2018 21:12 PM

var date = "2018-06-11T14:12:43";
var LastModifiedDate = {
        date: date,
        tzId: "America/Mexico_City",
        tzCode: "PDT" 
}
       console.log("Mexico_City-> normal ->" + utils.formatDate(utils.convertPlatformDateToMillis(LastModifiedDate)));

        LastModifiedDate = {
             date: date,
             tzId: "America/New_York",
             tzCode: "PDT"
         }
        console.log("New_York-> 1 hr ahead ->" + utils.formatDate(utils.convertPlatformDateToMillis(LastModifiedDate)));
        LastModifiedDate = {
            date: date,
            tzId: "America/Los_Angeles",
            tzCode: "PDT"
        }
        console.log("Los_Angeles-> 2hr behind ->" + utils.formatDate(utils.convertPlatformDateToMillis(LastModifiedDate)));


class Utils {

        convertPlatformDateToMillis(pltDateObject) {
           return momentTimeZone.tz(pltDateObject.date, pltDateObject.tzId);
        }

        formatDate(dateInMillis) {
           return moment(new Date(dateInMillis)).format('MMM DD, YYYY HH:mm A');
        }
}
not-a-bug

Most helpful comment

@ravisuryawanshi18
I think you should change code to this:

class Utils {

    convertPlatformDateToMillis(date) {
        // parse 2018-06-11T14:12:43 in Asia/Kolkata timezone
        return momentTimeZone.tz(date, 'Asia/Kolkata').valueOf();
    }

    formatDate(dateInMillis, timezone) {
        // convert date to @timezone and format it
        return momentTimeZone(dateInMillis).tz(timezone).format('MMM DD, YYYY HH:mm A');
    }
}

const utils = new Utils();

var milis = utils.convertPlatformDateToMillis("2018-06-11T14:12:43"); // 1528706563000

console.log(utils.formatDate(milis, 'America/New_York')); // Jun 11, 2018 04:42 AM
console.log(utils.formatDate(milis, 'America/Mexico_City')); // Jun 11, 2018 03:42 AM
console.log(utils.formatDate(milis, 'America/Los_Angeles')); // Jun 11, 2018 01:42 AM

>All comments

@ravisuryawanshi18
I think you should change code to this:

class Utils {

    convertPlatformDateToMillis(date) {
        // parse 2018-06-11T14:12:43 in Asia/Kolkata timezone
        return momentTimeZone.tz(date, 'Asia/Kolkata').valueOf();
    }

    formatDate(dateInMillis, timezone) {
        // convert date to @timezone and format it
        return momentTimeZone(dateInMillis).tz(timezone).format('MMM DD, YYYY HH:mm A');
    }
}

const utils = new Utils();

var milis = utils.convertPlatformDateToMillis("2018-06-11T14:12:43"); // 1528706563000

console.log(utils.formatDate(milis, 'America/New_York')); // Jun 11, 2018 04:42 AM
console.log(utils.formatDate(milis, 'America/Mexico_City')); // Jun 11, 2018 03:42 AM
console.log(utils.formatDate(milis, 'America/Los_Angeles')); // Jun 11, 2018 01:42 AM
Was this page helpful?
0 / 5 - 0 ratings