2014-09-23 82 views
2

是否有可用的c#插件处理所有的moment.js时区。Moment.js时区转换C#.NET

我很难比较后端的日期,因为来自moment.js的时区与来自.net DateTime的时区不同。

我需要将时间转换为Utc,然后再比较不同的分时日期。 我正在使用nodatime,它能够处理一些时区,但不是全部。

谢谢。

编辑: NodaTime处理大部分时区,但我仍然需要覆盖缩写。有没有可用的东西?

谢谢。

+0

你可以将一个moment.js datetime转换为utc吗?这可以解析nodatime - – 2014-09-23 06:48:28

+0

谢谢。我发现了nodatime,但我在处理时区缩写时仍遇到问题。是否有其他方法通过缩写来获取时区?例如ACST =澳大利亚中部标准时间 – 2014-09-23 09:07:30

+0

您可以找到*所有*时区使用特定缩写,但您最好避免使用缩写。 moment.js不会为您提供完整的IANA ID,例如欧洲/伦敦? – 2014-09-23 10:54:23

回答

1

因此,NodaTime处理了奥尔森时区以及GMT +,UTC和其他地区。对于缩写,我用这个结算了

public static DateTimeZone GetTimeZone(string id) 
    { 
     DateTimeZone timezone = DateTimeZoneProviders.Tzdb.GetZoneOrNull(id); 

     if (timezone == null) { 
      var instant = Instant.FromDateTimeUtc(DateTime.UtcNow); 
      var source = DateTimeZoneProviders.Tzdb; 
      id = source.Ids.Where(i => source[i].GetZoneInterval(instant).Name == id).FirstOrDefault(); 
      timezone = DateTimeZoneProviders.Tzdb.GetZoneOrNull(id); 
     } 

     return timezone; 
    }