2011-02-17 12 views
6

मुझे भाषा गणना डेटाबेस में कनवर्ट करने के लिए क्रोनिक, प्राकृतिक भाषा पार्सर से अवगत है, लेकिन मैं ' मैं सोच रहा हूं कि मैं उस डेटा को कुछ ऐसे रूप में कैसे परिवर्तित कर सकता हूं जो मनुष्य आसानी से समझ सकते हैं।रूबी/रेल - प्राकृतिक भाषा में दिनांक/समय वापस कनवर्ट करें (2011-02-17 => 17 फरवरी, 2011)

उदाहरण के लिए

:

Chronic.parse('today') => 2011-02-17 17:30:00 -0500 

तो वहाँ "2011-02-18 20:00:00" लेने के लिए और के रूप में "शुक्रवार, फरवरी 18 वीं, 2011 10 में" यह प्रतिनिधित्व करने के लिए एक रास्ता है ??

अनिवार्य रूप से क्रोनिक के विपरीत?

उत्तर

4

बार-बार एक नज़र डालें, यह समय कक्षा के लिए it's implementation का एक लिंक है।

इसके साथ

क्या आप वर्तमान दिनांक और समय करना चाहता था, तो कुछ भी आप चाहते हैं करने के लिए :-)

>> Time.now.strftime("%A, %B %d, %Y at %l%p") 
=> "Thursday, February 17, 2011 at 5PM" 
+1

अनुशंसित लिंक (सभी संभव तारीख वार्स को समझने के लिए) http://www.foragoodstrftime.com/ – Dogbert

3

http://api.rubyonrails.org/classes/DateTime.html#method-i-to_formatted_s

तारीख प्राप्त करने में सक्षम होना चाहिए, बस करो:

Time.current.to_formatted_s(:long_ordinal) 

पाने के लिए:

February 17th, 2011 12:16 

यदि आप अपना स्वयं का स्वरूपण लिखना चाहते हैं तो एपीआई दिखाता है कि आप उस लिंक में ऐसा कैसे कर सकते हैं।

%a weekday name. 
%A weekday name (full). 
%b month name. 
%B month name (full). 
%c date and time (locale) 
%d day of month [01,31]. 
%H hour [00,23]. 
%I hour [01,12]. 
%j day of year [001,366]. 
%m month [01,12]. 
%M minute [00,59]. 
%p AM or PM 
%S Second [00,61] 
%U week of year (Sunday)[00,53]. 
w weekday [0(Sunday),6]. 
W week of year (Monday)[00,53]. 
x date (locale). 
%X time (locale). 
%y year [00,99]. 
%Y year [2000]. 
%Z timezone name. 

एकमात्र कारण मैं strftime से अधिक to_formatted_s की सिफारिश है, क्योंकि एक अच्छा config/initializers/time_formats.rb साथ, आप अपने दृश्यों ड्रायर रख सकते: यहाँ उपलब्ध स्वरूपों की एक सूची है।

2

मुझे आश्चर्य हुआ कि "क्रोनिक" रिम के विपरीत नहीं था, इसलिए मैंने एक लिखा। यह आपके ActiveRecord ऑब्जेक्ट्स पर काम करेगा।

बस मणि इंस्टॉल करें और अपने बनाए गए_ट फ़ील्ड पर 'सुंदर' विधि, या ActiveSupport :: TimeWithZone की कक्षा के साथ किसी भी अन्य फ़ील्ड को कॉल करें।

+0

यह पहले से ही रेल में मौजूद है। 'प्रारंभकर्ता/date_time_formats.rb' देखें - वे प्रारूप निर्दिष्ट करते हैं जिन्हें आप' ActiveSupport :: TimeWithZone # to_s' पर भेज सकते हैं। देखें [टाइम # to_formatted_s] (http://api.rubyonrails.org/classes/Time.html#method-i-to_formatted_s)। सापेक्ष समय के लिए, 'time_ago_in_words' सहायक हैं। –

+1

मेरी राय में, शब्दों और समय में समय की दूरी शब्द में एक उपयोगी अल्पकालिक समाधान प्रदान करते हैं, लेकिन उपयोगी दीर्घकालिक समाधान नहीं। "5 महीने पहले" या "2 साल पहले" आपके उपयोगकर्ताओं के लिए उपयोगी सहायक नहीं हैं। हबलॉट पर सेट किए गए डिफ़ॉल्ट अनुमान लगाते हैं कि "अंतिम सोमवार" जैसे सहायक लोग सबसे दूर के पीछे के बारे में सोचेंगे, बिना किसी पूर्ण योग्यता के समय के बारे में सोचना चाहते हैं। मेरी राय में, यह एक बेहतर ux है। एक देव के रूप में, मैंने देवताओं के मॉडल डेटा का उपयोग करने की अपेक्षा करने की भी कोशिश की, और सीधे उन क्षेत्रों में सहायक को जोड़ा जहां डॉटिवि और टीएआईडब्लू का सबसे अधिक उपयोग रेल ऐप में किया जाता है। –

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