Globalize 将在即将发布的 1.3 版中支持 IANA 时区!
npm install globalize@1.3.0-alpha.0 cldr-data iana-tz-data
然后
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:请注意,它还支持在特定 IANA 时区解析日期字符串。
详细信息在这里https://github.com/globalizejs/globalize/pull/701#issuecomment-287652673
老答案:
您可以使用 moment.js 进行日期操作并使用 Globalize 来格式化没有时区部分的日期,即您的第二个示例{datetime: "medium"}
[1]。这对你可行吗?或者,您可以使用它加上 moment.js 为您打印时区名称吗?
1:请注意,如果您需要不同/自定义模式,您可以使用{skeleton: <pattern>}
.
正确答案
全球化时区支持仅限于原生 JavaScript Date 提供的内容,其时区支持仅限于获取用户的本地时区偏移量,仅此而已,即它不允许使用不同的时区名称或时区偏移量设置日期。因此,它只允许格式化用户的本地时区(不是任意的)。因此,我相信 Globalize 对您格式化日期和时间很有用,但对它的时区部分没有用。如果您想了解更多关于 Globalize 时区支持的信息,请在https://github.com/jquery/globalize/pull/202#issuecomment-33020199找到详细信息。
使用 Globalize 格式化日期将为您提供符合 CLDR 的格式(以及最新的语言环境数据),并且将为您提供运行时支持:小的最终文件大小(用于更快的页面加载)和预编译的格式化程序(用于更快地在客户端执行)(更多信息)。我希望这可以有所帮助,如果您还有其他问题,请告诉我。