यह प्रश्न this one से संबंधित है, लेकिन इसे अधिक सामान्य रखा जाता है और इसका स्वतंत्र रूप से इलाज किया जा सकता है।क्वार्ट्ज.नेट - क्या यह यूनिट परीक्षण पास नहीं होना चाहिए?
संपादित करें: क्वार्ट्ज संस्करण v2.0.1
मेरी समझ से है, तो निम्न इकाई परीक्षा उत्तीर्ण करना चाहिए:
[Test]
public void Test() {
// run every first day of month at 14:00 hours
CronExpression expression = new CronExpression("0 0 14 1 * ?");
// TimeZoneInfo.Local = {(UTC+01:00) Amsterdam, Berlin, Bern, Rom, Stockholm, Wien}
if (!TimeZoneInfo.Local.SupportsDaylightSavingTime) {
return;
}
// get "summertime" period for current timezone
var daylightChange = TimeZone.CurrentTimeZone.GetDaylightChanges(2013);
// -> daylightChange.Start {31.03.2013 02:00:00} System.DateTime
// -> daylightChange.End {27.10.2013 03:00:00} System.DateTime
// get one startpoint before and one after begin of summertime
DateTimeOffset beforeSummertime = daylightChange.Start.ToUniversalTime().AddDays(-1);
DateTimeOffset afterSummertime = daylightChange.Start.ToUniversalTime().AddDays(1);
// -> beforeSummertime {30.03.2013 01:00:00 +00:00} System.DateTimeOffset
// -> afterSummertime {01.04.2013 01:00:00 +00:00} System.DateTimeOffset
DateTimeOffset? nextValidTimeFromBefore = expression.GetNextValidTimeAfter(beforeSummertime);
DateTimeOffset? nextValidTimeFromAfter = expression.GetNextValidTimeAfter(afterSummertime);
// nextValidTimeFromBefore {01.04.2013 13:00:00 +00:00} System.DateTimeOffset?
// nextValidTimeFromAfter {01.04.2013 12:00:00 +00:00} System.DateTimeOffset?
Assert.AreEqual(nextValidTimeFromBefore, nextValidTimeFromAfter);
}
हालांकि (जैसा कि आप देख सकते हैं), nextValidTimeFromBefore
nextValidTimeFromAfter
से अलग है। परिणाम nextValidTimeFromAfter
में सही है। यूटीसी 12:00 का परिणाम गर्मियों के दौरान 14:00 बजे होगा (जो उस बिंदु पर पहले ही शुरू हो चुका है)। इससे कोई फर्क नहीं पड़ता कि GetNextValidTimeAfter()
पैरामीटर गर्मियों की अवधि के अंदर या बाहर एक समय निर्दिष्ट करता है।
क्या अगला वैलिडटाइम बराबर होना चाहिए या मेरा दृष्टिकोण त्रुटिपूर्ण होना चाहिए?
यह मेरे लिए ठीक (मैं अपने TZ में नहीं कर रहा हूँ) से गुजरता है और अगर मैं सिर्फ शुरुआत के साथ एक नया 'DaylightTime' वस्तु बना सकते हैं और अंत में आप विस्तृत गए तारीखें (जैसे 'डेलाइट चेंज = नया डेलाइटटाइम (नया डेटटाइम (2013, 3, 31, 2, 0, 0), नया डेटटाइम (2013, 10, 27, 2, 0, 0), टाइमस्पेन। मेनवैल्यू) ') यह भी गुजरता है। –
धन्यवाद, इसने मुझे नए क्वार्ट्ज संस्करणों पर एक और नज़र डालने के लिए प्रोत्साहित किया। मैंने पहले से ही साइट पर परिवर्तन-लॉग की जांच की है, जो संबंधित फिक्स का उल्लेख नहीं करता है। हालांकि, जब मैंने भंडार में काम करने के माध्यम से देखा तो मैंने देखा कि वास्तव में इसके लिए एक फिक्स था। मैं विस्तृत जानकारी के साथ एक जवाब जोड़ दूंगा। –
मैंने 2.1.2.400, एफडब्ल्यूआईडब्ल्यू के साथ इसकी कोशिश की –