आज 2 9 फरवरी है: जिस दिन हमारे परीक्षण टूट गए।रेल्स टाइमविथज़ोन और लीप साल
हमारे परीक्षण विफल हो रहे हैं क्योंकि ये परीक्षण ऐसी चीजें करते हैं जो अंत में, इस तरह की कमांड से तुलना की जा सकती हैं: Time.zone.now - 1.year + 1.year
। और यह Time.zone.now
के बराबर होता है।
ऐसा क्यों होता है? ActiveSupport इस तरह की गणना में लीप वर्षों को संभालने में सक्षम क्यों नहीं है? क्या यह टाइमस्टैम्प के साथ काम नहीं करता है, जो इस तरह की समस्या को होने से रोक देगा?
आप आज यह परीक्षण कर रहे हैं, तो आप एक बुरी किस्मत ... आज फरवरी, जो केवल हर 4 साल से मौजूद है की 29 है। तो 'Time.zone.now' +' 1. वर्ष 'आपको 28 फरवरी तक ले जाएगा क्योंकि 2 9वीं वर्ष 2017 के लिए मौजूद नहीं है। '1.year.from_now' 28 फरवरी को वापस लौटाएगा 2017 – MrYoshiji
हां मैं समझता हूं। लेकिन उदाहरण के लिए 1 मार्च के बराबर 'Time.zone.now + 1.year' क्यों नहीं है? मेरी राय में यह अधिक उपयुक्त होगा। – Guilherme
Time.zone.now - 365.days + 365.days हालांकि काम करता है ... – tobmatth