2012-08-06 16 views
24

यहाँ प्रदर्शित करने के लिए है मैं प्रदर्शित करने के लिए चाहते हैं:एक तारीख वस्तु का प्रारूपण एक मानव पठनीय तारीख

May 13, 2012 

यहाँ प्रदर्शित किया जा रहा है:

2012-05-13 

मैं कुछ जवाब के लिए खोज की है और यह नेतृत्व मुझे "Formatting Dates and Floats in Ruby", जहां यह एक संभव समाधान का उल्लेख करने के लिए:

<p class="date"><%= @news_item.postdate.to_s("%B %d, %Y") %></p> 

हालांकि इस वें परिवर्तन नहीं करता है ई आउटपुट बिल्कुल। कोई डीबगिंग त्रुटियां नहीं, या अपवाद निकाल दिए जाते हैं।

मैं यह कर सकता है और यह पूरी तरह से ठीक काम करता है:

<p class="date"><%= Time.now.to_s("%B %d, %Y") %></p> 

यहाँ मेरी माइग्रेशन फ़ाइल है (देखने के लिए डेटा प्रकार मैं इस्तेमाल किया):

class CreateNewsItems < ActiveRecord::Migration 
    def change 
    create_table :news_items do |t| 

     t.date :postdate 

     t.timestamps 
    end 
    end 
end 

उत्तर

44

Date.to_sTime.to_s के समान नहीं है । आपका postdate एक Date है, इसलिए इसलिए आप के बजाय strftime को देखने के लिए चाहते हो सकता है: पहले से ही
Need small help in converting date format in ruby

+0

भी देखें - http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime – JGrubb

+8

एक नाबालिग ध्यान दें: 'strftime ("% बी% -d ,% वाई ") मानव पठनीयता के लिए थोड़ा सा अच्छा है। '% -d' अग्रणी 0 को हटा देता है, यानी मई 06, 2013 => 6 मई, 2013. –

29

to_formatted_s समारोह: अपने रेल अनुप्रयोग के लिए अपने स्वयं के कस्टम दिनांक स्वरूप को जोड़ने के लिए

postdate.strftime("%B %d, %Y") 

या भी देखो रेल में DateTime वस्तुओं के लिए कुछ सामान्य मानव पठनीय प्रारूप हैं।

datetime.to_formatted_s(:db)   # => "2007-12-04 00:00:00" 
datetime.to_formatted_s(:short)   # => "04 Dec 00:00" 
datetime.to_formatted_s(:long)   # => "December 04, 2007 00:00" 
datetime.to_formatted_s(:long_ordinal) # => "December 4th, 2007 00:00" 
datetime.to_formatted_s(:rfc822)  # => "Tue, 04 Dec 2007 00:00:00 +0000" 
datetime.to_formatted_s(:iso8601)  # => "2007-12-04T00:00:00+00:00" 
+5

जो _to_s_ के लिए उपनाम है। –

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