2013-05-03 33 views
1

是否有從.9到1.0和1.1的突變更改列表?NodaTime突發變化.9 - > 1.1

在1.0版

例如Version History開始...原代碼(在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.0.0-beta1開始的版本歷史。雖然事實證明,我們刪除了1.0.0-β2靜態時區供應商的概念,所以它被覆蓋,儘管是短暫的:如何得到一個ID一個DateTimeZone

  • 檢修:
    • IDateTimeZoneProvider(SPI的時區)更名爲IDateTimeZoneSource,類似的重命名的內置信號源
    • 新的旨在呼叫者接口IDateTimeZoneProvider,一起緩存假設
    • 新類DateTimeZoneProviders與靜態屬性來訪問內置提供商:TZDB,BCL和默認(目前TZDB)
    • 移除多個贊成通過IDateTimeZoneProvider實現
    • DateTimeZoneCache現在公衆總是DateTimeZone靜態方法和實現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(); 
}