JavaScript中与.NET TimeZoneInfo.ConvertTimeBySystemTimeZoneId等效的方法是什么?

5

在.Net中,我可以使用以下代码来确定指定时区的时间:

var targetDate = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.UtcNow, "Atlantic Standard Time");

我一直在尝试用JavaScript解决这个问题,但是到目前为止没有成功。我找到了以下内容:http://www.techrepublic.com/article/convert-the-local-time-to-another-time-zone-with-this-javascript/,如果我可以指定一个偏移量,就能得到一些细节,但我似乎无法从指定的时区中获取它(从当前时区很容易得到myDate.getTimezoneOffset())。
同样在.Net中,我可以使用以下代码实现:
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Atlantic Standard Time");
TimeSpan offset = tzi.GetUtcOffset( myDateTime);
1个回答

5
JavaScript 无法原生地实现此功能,您需要使用库。我在这里提供了几个不同的库列表。
另外,请注意,“Atlantic Standard Time”是微软的时区标识符。您需要使用等效的IANA时区,“America/Halifax”。您可以在时区标签wiki中阅读更多信息,在“时区数据库”下方。如果您需要从Microsoft标识符转换,您将必须在您的.NET代码中使用Noda Time进行转换,就像我在这里所描述的那样。
这是使用moment-timezone的示例: (为了易读性,故意分开成单独的语句)
var now = moment();
var atlantic = now.tz("America/Halifax");
var s = atlantic.format();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接