2013-02-24 23 views
7

मैं एक शेल स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो दिनांक कमांड का उपयोग करके दिखाए जाने के तरीके के बजाय समय या रात में प्रदर्शित करता है। मुझे यकीन नहीं है कि मुझे ऐसा करने के बारे में कैसे जाना चाहिए। मुझे स्टार्टर्स के लिए लगता है, मैं तारीख कमांड से समय निकालने के लिए इसे कैसे मिटा सकता हूं? और मैं उस समय के लिए संख्या का उपयोग कैसे कर सकता हूं?एएम या अपराह्न नोटेशन में समय प्रदर्शित करने के लिए शैल स्क्रिप्ट लिखना

उत्तर

1

आप दिनांक आदेश के "+" फ़ॉर्मेटिंग विकल्प का उपयोग कर सकते हैं। उदा .:

> date +%l%p 
-> 7PM 
2
जिस तरह से यह उपयोग कर रहा तिथि आदेश

date आदेश एक प्रारूप स्ट्रिंग लेता है दिखाया गया है

बजाय। %p की आपूर्ति दिए गए समय मान, या मौजूदा लोकेल के अनुरूप स्ट्रिंग के अनुसार या तो "एएम" या "पीएम" प्रदर्शित करेगी। ,

% date +'%H:%M %p' 
08:01 am 

"उन्नत" यह कहता है strftime(): दोपहर के रूप में "PM" और आधी रात के रूप में, "पूर्वाह्न" व्यवहार किया जाता है। अधिक स्वरूपण विकल्पों के लिए मैन-पेज देखें।

7

क्या आप देख रहे हैं

man strftime 

कि स्ट्रिंग प्रारूप समय है, जो प्रारूप है कि date उपयोग करता है के लिए खड़ा है।

तो प्राप्त करने के लिए वर्तमान AM/PM, का उपयोग करें:

date +"%p" 

या

ampm=`date +"%p"` 
echo $ampm 

घंटे कई स्वरूपों में से एक (हो सकता है आप 12 या 24 घंटे समय चाहते हैं, ? शून्य या नहीं अग्रणी) मैं तुम्हें 12 घंटे का समय शून्य गैर अग्रणी चाहते अनुमान लगा रहा हूँ:

date +"%l" 
2

आप मुद्रित करने के लिए एक नीचे का उपयोग कर सकते ti मुझे एएम और पीएम प्रारूप में मिनट तक।

echo $(date +"%I:%M %p") 

उत्पादन: 21:20

या

echo $(date +"%r") 

आउटपुट: 21:20:09

या गूंज $ (तिथि + "% मैं% पी ")

आउटपुट: 09 अपराह्न

1

यह लोकेल सेटिंग्स पर निर्भर करता है।

LC_TIME="C" date +%l%p 
LC_TIME="C" date +'%l:%M %p'