रेल to_date
विधि String
पर विधि जोड़ती है। इसके स्रोत सरल है:
# File activesupport/lib/active_support/core_ext/string/conversions.rb, line 42
def to_date
return nil if self.blank?
::Date.new(*::Date._parse(self, false).values_at(:year, :mon, :mday))
end
Date._parse
रूबी के मूल निवासी है (एक ही विधि Date.parse
द्वारा कहा जाता है) और यह where the real work is done है।
यह पहली बार स्ट्रिंग से बाहरी प्रतीकों को दूर करने के लिए रेगुलर एक्सप्रेशन का उपयोग करता है तो _parse_eu
, _parse_iso
, _parse_dot
और इतने पर जैसे अन्य तरीकों को पास कर देता। इनमें से प्रत्येक अपने स्वयं के नियमित अभिव्यक्तियों और अन्य विधियों का उपयोग यह देखने के लिए करता है कि यह एक तारीख है जो इसे समझती है और अर्थपूर्ण जानकारी निकालती है। एक बार उनमें से एक "काम करता है" (यानी सच हो जाता है), शेष छोड़ दिए जाते हैं। आखिरकार, _parse
में, निकाली गई जानकारी का उपयोग दिनांक और समय बनाने के लिए किया जाता है, सप्ताह के दिन की जांच करने जैसी चीजों को जानने के लिए थोड़ा और काम करना और क्या "12" का वर्ष मूल्य 1 9 12 या 2012 होना चाहिए।
दस्तावेज़ इसे एक उदारवादी विधि कहते हैं, जिसका अर्थ यह हो सकता है कि यह दीवार पर संभावनाओं का एक गुच्छा फेंकता है कि क्या चिपक जाती है। यह बहुत खराब दस्तावेज है लेकिन उल्लेखनीय रूप से अच्छी तरह से काम करता है।
स्रोत
2012-03-15 17:54:10
'strptime' दिनांक स्वरूप को पता है अन्यथा यह उसके डिफ़ॉल्ट प्रारूप का प्रयोग करेंगे है। लेकिन एआर कई प्रारूपों में जादुई रूप से तारीखों का विश्लेषण कर सकता है। –
सुनिश्चित करें कि आप सभी दिनांक प्रारूपों का परीक्षण कर रहे हैं जो उपयोगकर्ता उपस्थित हो सकते हैं। वे हमेशा निर्धारवादी नहीं होते हैं। – aceofspades