Globalize is going to support IANA timezones on the upcoming version 1.3!
npm install globalize@1.3.0-alpha.0 cldr-data iana-tz-data
Then
var Globalize = require( "globalize" );
Globalize.load( require( "cldr-data" ).entireSupplemental() );
Globalize.load( require( "cldr-data" ).entireMainFor( "en" ) );
Globalize.loadIANATimezone( require( "iana-tz-data" ) );
Globalize( "en" ).formatDate(new Date(), {datetime: "short", timeZone: "America/Los_Angeles"});
// > '3/19/17, 3:19 PM'
Globalize( "en" ).formatDate(new Date(), {datetime: "short", timeZone: "America/New_York"});
// > '3/19/17, 6:19 PM'
Globalize( "en" ).formatDate(new Date(), {datetime: "short", timeZone: "America/Sao_Paulo"});
// > '3/19/17, 7:19 PM'
Globalize( "en" ).formatDate(new Date(), {datetime: "short", timeZone: "Europe/Berlin"});
// > '3/19/17, 11:19 PM'
Globalize( "en" ).formatDate(new Date(), {datetime: "full", timeZone: "America/Los_Angeles"});
// > 'Sunday, March 19, 2017 at 3:19:22 PM Pacific Daylight Time'
Globalize( "en" ).formatDate(new Date(), {datetime: "full", timeZone: "America/New_York"});
// > 'Sunday, March 19, 2017 at 6:19:22 PM Eastern Daylight Time'
Globalize( "en" ).formatDate(new Date(), {datetime: "full", timeZone: "America/Sao_Paulo"});
// > 'Sunday, March 19, 2017 at 7:19:22 PM Brasilia Standard Time'
Globalize( "en" ).formatDate(new Date(), {datetime: "full", timeZone: "Europe/Berlin"});
// > 'Sunday, March 19, 2017 at 11:19:53 PM Central European Standard Time'
PS: Note it also supports parsing date strings in specific IANA timezones.
Details here https://github.com/globalizejs/globalize/pull/701#issuecomment-287652673
Old answer:
Can you use moment.js for date manipulation and use Globalize for formatting the date without the timezone part, i.e, your 2nd example with {datetime: "medium"}
[1]. Is that feasible for you? Alternatively, could you use that plus having moment.js to print the timezone name for you?
1: Note that if you need a different/custom pattern, you can use {skeleton: <pattern>}
.
Proper answer
Globalize timezone support is limited to what's offered by the native JavaScript Date, whose timezone support is limited to getting user's local timezone offset and that's all, i.e., it doesn't allow setting the date with a different timezone name or timezone offset. Therefore, it only allows formatting the user's local timezone (not an arbitrary one). Therefore, I believe Globalize will be useful to you for formatting the date and time, but not the timezone part of it. If you want to read more about Globalize timezone support, find details at https://github.com/jquery/globalize/pull/202#issuecomment-33020199.
Using Globalize to format the date will give you a CLDR compliant formatting (and up-to-date locale data) and it will give you runtime support: small final file size (for faster page load) and precompiled formatter (for faster execution on client) (more info). I hope this could be of some help, just let me know if you have additional questions.