2012-06-28 9 views
14

रूबी 1.9 प्रोग्राम में, मैं वर्तमान समय को Thu 1:51 PM जैसे प्रारूपित करना चाहता हूं। इस उदाहरण में दिन के घंटे के लिए मुझे किस प्रारूप कोड का उपयोग करना चाहिए (1)?मैं समय के घंटे को अग्रणी शून्य या अग्रणी स्थान के बिना कैसे लिखूं?

Time.now.strftime '%a %I:%M %p' #=> "Thu 01:51 PM" 
Time.now.strftime '%a %l:%M %p' #=> "Thu 1:51 PM" 

%I एक अग्रणी शून्य (01) है। %l में एक अग्रणी स्थान है ( 1)। मुझे strftime documentation में घंटे के लिए कोई अन्य प्रारूप कोड नहीं दिख रहा है। मैं .lstrip का उपयोग नहीं कर सकता क्योंकि अंतरिक्ष स्ट्रिंग के बीच में है। मैं .gsub(/ +/, " ") का उपयोग कर सकता हूं, लेकिन मुझे आश्चर्य है कि कम हैकी, सरल तरीका है या नहीं।

उत्तर

36
Time.now.strftime '%a %-l:%M %p' #=> "Thu 1:51 PM" 

लिखें %l के बजाय %-l- प्रमुख रिक्त स्थान और शून्यों को स्ट्रिप्स करता है।

आप अन्य प्रारूप कोड के साथ - का भी उपयोग कर सकते हैं। रूबी स्ट्रेटाइम दस्तावेज़ भी %-m और %-d का उल्लेख करता है, हालांकि यह उल्लेख करने में विफल रहता है कि आप किसी भी कोड के साथ - का उपयोग कर सकते हैं। इस प्रकार, %-I%-l के समान परिणाम देगा। लेकिन मैं %-l की सलाह देता हूं, क्योंकि I के बजाय मुझे यह संकेत मिलता है कि आप शुरुआत में कुछ भी नहीं चाहते हैं - जो स्थान लिखता है वह अधिक आकस्मिक दिखता है।

आप an exhaustive list of Ruby 1.8strftime format codes भी देख सकते हैं, जिनमें - और समान वाक्यविन्यास _ और 0 शामिल हैं। यह कहता है कि मैक ओएस एक्स पर रूबी 1.8 उन विस्तारित वाक्यविन्यासों का समर्थन नहीं करता है, लेकिन चिंता न करें: वे मेरी ओएस एक्स मशीन पर रुबी 1.9 में काम करते हैं।

+0

इच्छा प्रत्येक समाधान यह सरल और सीधा था। +1 – flarn2006

+0

यह समाधान केवल यूनिक्स सिस्टम पर काम कर सकता है, न कि विंडोज पर। [यह जवाब "पायथन' strftime' - अग्रणी 0 के बिना दिनांक? "] (Https://stackoverflow.com/a/2073189/578288) पायथन में एक ही कार्य के बारे में है, और कहता है कि'% -' केवल काम करता है यूनिक्स पर ["% -d", या "% -e" प्रमुख स्थान या शून्य को क्यों हटाता है?] (Https://stackoverflow.com/q/28894172/578288) कहता है कि असंगतता इसलिए है क्योंकि पायथन अंतर्निहित ऑपरेटर सिस्टम को कॉल करता है 'strftime', जिसमें प्लेटफ़ॉर्म-विशिष्ट एक्सटेंशन हो सकते हैं। मुझे नहीं पता कि रुबी का 'स्ट्रेटटाइम' वही है या नहीं। –

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