2013-03-04 57 views
8

System.TimeZoneInfo có một phương thức được gọi là IsDaylightSavingTime, lấy đối tượng DateTime và trả về true nếu datetime được chỉ định rơi vào DST cho múi giờ đó. Có chức năng tương đương trong NodaTime hoặc cách khác để đạt được cùng một kết quả không?Tương đương System.TimeZoneInfo.IsDaylightSavingTime trong NodaTime là gì?

+0

Tôi hiện đã thêm yêu cầu tính năng để bao gồm điều này trong ZonedDateTime trực tiếp: https://code.google.com/p/noda-time/issues/detail?id=264 –

Trả lời

9

Bạn có thể nhận điều này từ ZoneInterval. Đây là một phương pháp mở rộng sẽ giúp ích.

public static bool IsDaylightSavingsTime(this ZonedDateTime zonedDateTime) 
{ 
    var instant = zonedDateTime.ToInstant(); 
    var zoneInterval = zonedDateTime.Zone.GetZoneInterval(instant); 
    return zoneInterval.Savings != Offset.Zero; 
} 

Bây giờ bạn có thể làm:

zdt.IsDaylightSavingsTime(); 

Nếu bạn không có một ZonedDateTime, bạn có thể nhận được một từ một DateTimeZone cộng hoặc một Instant hoặc một LocalDateTime. Hoặc bạn có thể xoa bóp phương pháp mở rộng này để lấy những tham số đó.

Cập nhật: Chức năng này hiện được bao gồm trong Noda Time v1.3 trở lên, do đó bạn không còn phải tự viết phương thức mở rộng.

Các vấn đề liên quan