2010-05-12 16 views
28

हाहा ..आपके समय की पुरानी हानि का उपयोग कर सकते हैं?

मैं कैलेंडर में जोड़े गए समय को पार्स करने के लिए क्रोनिक का उपयोग कर रहा हूं। जहां कोड सही समय पर काम करता है और लागू करता है, अंत परिणाम यह है कि, यदि कोई उपयोगकर्ता एक समय जोड़ता है, तो इसकी कोई तिथि नहीं है, और क्योंकि इसकी कोई तिथि नहीं है, यह परिणाम में दिखाई नहीं देगी। कोई विचार?

def set_dates 
    unless self.natural_date.blank? || Chronic.parse(self.natural_date).blank? 
    # check if we are dealing with a date or a date + time 
    if time_provided?(self.natural_date) 
     self.date = nil 
     self.time = Chronic.parse(self.natural_date) 
    else 
     self.date = Chronic.parse(self.natural_date).to_date 
     self.time = nil 
    end 
    end 

    unless self.natural_end_date.blank? || Chronic.parse(self.natural_end_date).blank? 
    # check if we are dealing with a date or a date + time 
    if time_provided?(self.natural_end_date) 
     self.end_date = nil 
     self.end_time = Chronic.parse(self.natural_end_date) 
    else 
     self.end_date = Chronic.parse(self.natural_end_date).to_date 
     self.end_time = nil 
    end 
    end 
end 

संपादित करें:

यहाँ time_provided है? विधि:

def time_provided?(natural_date_string) 
    date_span = Chronic.parse(natural_date_string, :guess => false) 
    (date_span.last - date_span.first).to_i == 1 
end 
+10

मुझे स्वीकार करना होगा, जब मैंने इसका शीर्षक पढ़ा, तो उसने मुझे हंस दिया। –

+1

हे! मैं भी, मैंने सोचा कि यह एक ट्रोल –

+11

+1 था पहले मैं wtf था। तब मैं हँसे। तब मैंने रोया। तब मैं ऊंचा हो गया। – Alan

उत्तर

2

पहले, मैं, वास्तव में यह सुनिश्चित करें कि आप क्या बारे में पूछ रहे नहीं कर रहा हूँ, क्योंकि यह कोड जानबूझकर करता है कि तुम क्या वर्णन ... वहां दिए गए समय आ गया है जब, तिथि खाने nil आवंटित कर रहे हैं की तरह लग रहा है। और मुझे नहीं लगता कि क्रोनिक दोष है क्योंकि इस तरह आपका कोड काम करता है।

नहीं अपने डिजाइन (क्यों अलग तारीख & समय क्षेत्र हैं), खेतों आदि के प्रकार, मैं इस तरह एक छोटे से kludge के साथ शुरू करने की सलाह देते हैं जानते हुए भी:

if time_provided?(self.natural_date) 
    self.time = Chronic.parse(self.natural_date) 
    self.date = self.time.to_date 

या:

self.end_date = Chronic.parse(self.natural_date).to_date 
if time_provided?(self.natural_date) 
    self.time = Chronic.parse(self.natural_date) 
end 

या शायद समस्या आपके द्वारा प्रदान किए गए कोड से बाहर है: उस हिस्से में जो "क्योंकि इसकी कोई तिथि नहीं है, यह परिणाम में नहीं दिखाएगी" व्यवहार? शायद आपको शर्तों को और अधिक लचीला बनाना चाहिए?

+0

महान supposition। हां, मैं देखता हूं कि कोड निश्चित रूप से इसे शून्य पर सेट नहीं करना चाहिए। तो मैंने जो किया वह कम से कम गैर-शून्य था .. self.date = Chronic.parse (self.natural_date) और, पूरी तरह से यह सुनिश्चित नहीं किया कि उसने क्या किया, लेकिन कम से कम इसे ऐसा किया जिससे आप नहीं कर सके अब एक समय नहीं जोड़ें क्योंकि यह ऑटो का सुझाव नहीं देता है। : डी। असली सवाल यह है कि, समय और तारीख को अलग-अलग बनाना संभव है। इसलिए यदि वे एक तिथि + समय जोड़ते हैं, तो मुझे एक तिथि, और एक अलग तारीख + समय मिल जाएगा। वैकल्पिक रूप से, यदि वे सिर्फ एक तारीख जोड़ते हैं, तो मुझे एक तिथि, और दिनांक + समय के बिना समय मिलेगा: डी – Trip

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