Format datetime with moment.js to show timezone

20,197

As described in the documentation:

Note: as of 1.6.0, the z/zz format tokens have been deprecated. Read more about it here.

The general problem is that time zone abbreviations are not available from the browser through a consistent API. In order to provide them, one has to have an external source of data.

You may want to look into using the moment-timezone addon. It provides time zone information, including abbreviations. You would have to know the specific time zone you are working with. For example:

moment.tz("2015-08-05T00:00:00+01:00", "Europe/London").format("MM/DD/YYYY hh:mm A z");
// "08/05/2015 12:00 AM BST"

Also, you shouldn't mix HH (hours of the 24-hour clock) with A (the 12-hour am/pm designator). Either use hh with A, or use HH without A.

Share:
20,197
freshbm
Author by

freshbm

Nothing to see here. Dovie'andi se tovya sagain.

Updated on August 06, 2020

Comments

  • freshbm
    freshbm over 3 years

    I have problem showing timezone with moment.js.

    I tried with this code:

    var result = moment(someDate).format("MM/DD/YYYY HH:mm A Z");
    

    and I get return, for example: 08/05/2015 06:18 PM +02:00, which is fine, but I want that my output be like 08/05/2015 06:18 PM WEDT or something like that, with abbreviations of timezones.

    Tried using this code, but I get empty timezone on the end:

    var result = moment(someDate).format("MM/DD/YYYY HH:mm A z"); 
    

    or

    var result = moment(someDate).format("MM/DD/YYYY HH:mm A zz");
    

    UPDATE

    So as @Matt Johnson suggested, I used this approach to show time zone using moment-timezone-with-data.js and tzdetect.js:

    var tzName = tzdetect.matches()[0];
    var result = moment.tz(myDate, tzName).format("MM/DD/YYYY h:mm A zz");