NodaTime Breaking Changes .9 - > 1.1

时间:2013-05-03 23:42:00

标签: nodatime

是否有从.9到1.0和1.1的重大变化列表?

Version History从版本1.0开始

例如...原始代码(在.9上),现在哭(在1.1上)。

public static DateTime AdjustTo(this DateTime date, string timeZoneId)
{
    if (date == DateTime.MinValue)
        return date;
    DateTimeZone.SetProvider(new BclTimeZoneProvider());
    var zone = DateTimeZone.ForId(timeZoneId ?? "UTC");
    var dateTime = new ZonedDateTime(Instant.FromDateTimeUtc(date.ToUniversalTime()), zone);
    return dateTime.ToDateTimeUnspecified();
}

上面的代码有两个重大更改... DateTimeZone没有SetProvider或ForId方法。

另外,如果我做错了,我也会接受这些反馈。

谢谢。

1 个答案:

答案 0 :(得分:4)

回答您的第一个问题:不,我们只有1.0.0-beta1以后的版本历史记录。虽然事实证明,我们在1.0.0-beta2中删除了静态时区提供程序的概念,因此它被覆盖,尽管简要说明:

  
      
  • 如何从ID中获取DateTimeZone的大修:   
        
    • IDateTimeZoneProvider(用于时区的SPI)重命名为IDateTimeZoneSource,以及内置来源的类似重命名
    •   
    • 新界面IDateTimeZoneProvider针对呼叫者,假设缓存为
    •   
    • 具有静态属性的新类DateTimeZoneProviders,用于访问内置提供程序:TZDB,BCL和默认值(当前为TZDB)
    •   
    • 删除了各种DateTimeZone静态方法,支持始终通过IDateTimeZoneProvider实现
    •   
    • DateTimeZoneCache现已公开并实施IDateTimeZoneProvider
    •   
  •   

等同于1.0的代码将是:

public static DateTime AdjustTo(this DateTime date, string timeZoneId)
{
    if (date == DateTime.MinValue)
        return date;
    var zone = DateTimeZoneProviders.Bcl[timeZoneId ?? "UTC"];
    var dateTime = new ZonedDateTime(Instant.FromDateTimeUtc(date.ToUniversalTime()), zone);
    return dateTime.ToDateTimeUnspecified();
}