1

.9 から 1.0 および 1.1 への重大な変更のリストはありますか?

バージョン履歴はバージョン 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();
}

上記のコードには 2 つの重大な変更があります。DateTimeZone には SetProvider または ForId メソッドがありません。

また、もし私のやり方が間違っていたら、そのフィードバックも受け取ります。

ありがとうございました。

4

1 に答える 1

4

最初の質問に答えるには: いいえ、1.0.0-beta1 以降のバージョン履歴しかありません。結局のところ、1.0.0-beta2 で静的タイムゾーン プロバイダーの概念を削除したため、簡単ではありますがカバーされています。

  • DateTimeZoneID から を取得する方法のオーバーホール:
    • 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 に答える