在 .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/其中有一些细节,如果我可以指定一个偏移量,但我似乎无法弄清楚如何从指定的时区获取它(从 currentTimezone 就像 myDate.getTimezoneOffset()
一样简单)。
同样在 .Net 中我可以这样做:
TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Atlantic Standard Time");
TimeSpan offset = tzi.GetUtcOffset( myDateTime);
最佳答案
JavaScript 本身无法做到这一点。你需要一个图书馆。我为此提供了几个不同库的列表 here .
同时认识到“大西洋标准时间”是 Microsoft 时区标识符。您需要使用等效的 IANA 时区,即“美国/哈利法克斯”。您可以在 timezone tag wiki 中阅读更多内容,在“时区数据库”下。如果您需要从 Microsoft 标识符进行转换,则必须使用 Noda Time 在您的 .NET 代码中执行此操作,如我所述here .
这是一个使用 moment-timezone 的例子:
(为了便于阅读,有意分成单独的语句)
var now = moment();
var atlantic = now.tz("America/Halifax");
var s = atlantic.format();
关于Javascript equlivent 到 .Net TimeZoneInfo.ConvertTimeBySystemTimeZoneId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19496352/