2013-03-04 4 views
8

System.TimeZoneInfo में IsDaylightSavingTime नामक एक विधि है, जो डेटटाइम ऑब्जेक्ट लेता है और उस टाइमज़ोन के लिए निर्दिष्ट डेटाटाइम डीएसटी में पड़ता है तो सत्य लौटाता है। क्या NodaTime में एक समान कार्य है या एक ही परिणाम प्राप्त करने के लिए एक और तरीका है?सिस्टम TimeZoneInfo.IsDaylightSavingTime नोडाटाइम में समकक्ष क्या है?

+0

मैंने अब इसे ZonedDateTime में शामिल करने के लिए एक सुविधा अनुरोध जोड़ा है: https://code.google.com/p/noda-time/issues/detail?id=264 –

उत्तर

9

आप इसे ZoneInterval से प्राप्त कर सकते हैं। यहां एक विस्तार विधि है जो मदद करेगी।

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

अब आप कर सकते हैं:

zdt.IsDaylightSavingsTime(); 

आप एक ZonedDateTime की जरूरत नहीं है, तो आप एक DateTimeZone प्लस या तो एक Instant या एक LocalDateTime से एक मिल सकता है। या आप पैरामीटर के रूप में लेने के लिए इस विस्तार विधि को मालिश कर सकते हैं।

अद्यतन: यह फ़ंक्शन अब नोडा टाइम v1.3 और उच्चतर में शामिल है, इसलिए अब आपको एक्सटेंशन विधि स्वयं लिखनी नहीं है।

संबंधित मुद्दे