1

是否有从 0.9 到 1.0 和 1.1 的重大更改列表?

版本历史从版本 1.0 开始

例如......原始代码(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 方法。

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

谢谢你。

4

1 回答 1

4

回答您的第一个问题:不,我们只有从 1.0.0-beta1 开始的版本历史。虽然事实证明,我们在 1.0.0-beta2 中删除了静态时区提供程序的概念,所以它被覆盖了,虽然很简短:

  • 对如何DateTimeZone从 ID 获取 a 进行大修:
    • 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();
}
于 2013-05-04T09:01:53.180 回答