Dd / mm / yyyy_hh: mm: ss: ms में यूनिक्स या लिनक्स में समय टिकट प्रदर्शित करें


26

मुझे यूनिक्स / लिनक्स में वांछित प्रारूप में दिनांक और समय प्रदर्शित करने की आवश्यकता है। मेरा इच्छित प्रारूप है: dd / mm / yyyy hh: mm: ss: ms in Unix या Linux। मैं निम्नलिखित कमांड का उपयोग करके पास हो गया:

echo $(date +%x_%r)

यह रिटर्न:

08/20/2012_02:26:14 PM

कोई सुझाव?


2
क्या कोई कारण है जो आप उपयोग कर रहे हैं echo? यह बेमानी लगता है, आप बस dateसीधे उपयोग कर सकते हैं
lk-

मैं एक पैरामीटर में वर्तमान समय को संग्रहीत करने की योजना बनाता हूं और इसे आउटपुट फ़ाइल नाम के भाग के रूप में उपयोग करता हूं।
हांक

6
क्यों नहीं एक आईएसओ स्वरूपित तारीख स्ट्रिंग का उपयोग करें? उन / फिल्नामों में अच्छा नहीं है ... ( en.wikipedia.org/wiki/ISO_8601 )
जोहान

इस लिंक को देखें: ccollins.wordpress.com/2009/01/06/…

सबसे सामान्य प्रारूप: zxq9.com/archives/795
zxq9

जवाबों:


26
date +%x_%H:%M:%S:%N

यदि आपको एमएस के रूप में केवल दो पहले अंक प्रिंट करने की आवश्यकता है:

date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$/\1/'

इसे var में स्टोर करने के लिए:

VAR=$(date +%x_%H:%M:%S:%N | sed 's/\(:[0-9][0-9]\)[0-9]*$/\1/')

1
यह लिनक्स-विशिष्ट है; यह ओएस एक्स या * बीएसडी पर काम नहीं करता है।
cnst

नोट% x लोकेल की तारीख प्रतिनिधित्व को लौटाता है। तो यह वर्तमान स्थान के आधार पर बदल सकता है। यदि आप चाहते हैं कि विशिष्ट दिनांक प्रारूप आप संभवतः इसे प्रदान करने से बेहतर हैं (जैसा कि अन्य उत्तर भी नीचे दिखाते हैं) date +'%d/%m/%Y_%H:%M:%S:%N
स्टडजेक

23

यदि आप नैनोसेकंड परिशुद्धता के बजाय मिलीसेकंड चाहते हैं, तो आप %3Nइसके बजाय उपयोग कर सकते हैं %N:

$ date +'%d/%m/%Y %H:%M:%S:%3N'
12/04/2014 18:36:20:659

या अपने इच्छित उपयोग के साथ $(…):

$ echo "$(date +'%d/%m/%Y %H:%M:%S:%3N')"
12/04/2014 18:36:20:659

लेकिन जागरूक रहें, जो %Nआपके लक्ष्य प्रणाली या बैश संस्करण के आधार पर लागू नहीं हो सकता है। एक एम्बेडेड सिस्टम पर परीक्षण किया गया »GNU बैश, संस्करण 4.2.37 (2) -release (आर्म-बिल्डरोट-लाइनक्स-ग्नुआबी)« कोई नहीं था %N(न ही %3N):

date +"%F %T,%N"
2014-01-08 16:44:47,%N

2
ऐसा लगता है कि न तो FreeBsd और न ही Mac Osx समर्थन करता है %Nया %3N
जो

मैंने जोड़ा echo "$(date +'%F %H:%M:%S:%3N') Failed" >> logfile.txt, लेकिन यह file.file 08:21:02OURCE:184 Failedलॉगफाइल को लिखा था । मैंने गलत क्या किया?
स्वेन



0

कुछ इस तरह

दिनांक + '% d /% m /% Y_% H:% M:% S:% N'

नैनोसेकंड के लिए% N का उपयोग किया गया (000000000..999999999) क्योंकि मुझे अभी मिलीसेकंड नहीं मिला


0

तुम कोशिश कर सकते हो:

echo `date +"%Y_%m_%d %H:%M:%S,"``date +%N/1000000|bc -l|grep -Eo "^([0-9]{0,3})"`

किसी कारण से '`' छोड़ दिया गया है, इसलिए इसे प्रतिध्वनि के बाद और अंत में, या बस:

date +"[%Y_%m_%d %H:%M:%S,%3N]"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.