如何使用javascript从客户端获取c#timezoneinfo类的客户端时区ID

San*_*ika 7 javascript c# jquery timezone datetime

我想从JavaScript获取客户端时区id来解析c#TimezoneInfo类.并转换为utc time.And我有这个

var timezone = String(new Date());
return timezone.substring(timezone.lastIndexOf('(') + 1).replace(')', '').trim();
Run Code Online (Sandbox Code Playgroud)

问题是javascript时区返回CST有一段时间了.是否有正确的方法来获取时区ID

并从c#

TimeZoneInfo ZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timeZoneIdFromJavascript);
return TimeZoneInfo.ConvertTimeToUtc(Datetime, ZoneInfo);'
Run Code Online (Sandbox Code Playgroud)

Mat*_*int 10

  1. TimeZoneInfo使用Windows时区标识符.它们不会匹配任何来自JavaScript的东西.请阅读时区标签维基.
  2. 在JavaScript中识别用户的时区是不完美的.您可以使用其中一种方法猜测它,但这会给您一个IANA时区ID,而不是Windows时区ID.
  3. 您可以使用我的TimeZoneConverter库或此处描述的使用Noda Time的方法将IANA时区转换为Windows时区.但是,如果您打算使用Noda Time,那么您最好只使用IANA时区.Noda Time的工作要好得多TimeZoneInfo.
  4. 如果您只想将客户端的本地时间转换为UTC,那么只需在浏览器中使用JavaScript即可.那么你不需要知道当地的时区究竟是什么.