2011-05-02 2 views
11

मैं एक ऑटोकॉन्फ स्क्रिप्ट लिख रहा हूं जिसके लिए वर्तमान यूटीसी ऑफसेट की आवश्यकता है। तारीख कार्यक्रम से बाहर निकलने का कोई स्पष्ट तरीका नहीं है। क्या कमांड लाइन उपयोगिता से इसे प्राप्त करने का कोई सीधा तरीका है, या क्या मुझे एक ऐसा परीक्षा लिखनी चाहिए जो जानकारी प्राप्त करे और किसी भी तरह इसे कैप्चर करे?क्या मुझे यूनिक्स कमांड लाइन से यूटीसी ऑफ़सेट मिल सकता है?

+0

क्या आप समझा सकते हैं कि आपको इसकी आवश्यकता क्यों हो सकती है? यह एक बहुत अजीब आवश्यकता की तरह लगता है। –

+1

क्योंकि मैं प्रोग्राम में संकलन समय एम्बेड करना चाहता हूं, और __TIME__ यूटीसी ऑफ़सेट वापस नहीं करता है, इसलिए मैं इसे आईएसओ 8601 में नहीं बदल सकता। – vy32

उत्तर

15

इस प्रयास करें, और देखें कि क्या यह तुम्हारे लिए काम करता है:

date +%z 
3

हाँ, date ऐसा कर सकते हैं:

[[email protected]:~] date -R 
Mon, 02 May 2011 17:37:45 +0100 

या, और अधिक विशेष:

[[email protected]:~] date -R | awk '{print $6}' 
+0100 
[[email protected]:~] date +%z 
+0100 

पढ़ना date --help बहुत उपयोगी है।

+1

यह बढ़िया है। मैं मैन पेज को देख रहा था और इसे समझ नहीं पाया। – vy32

+0

मुझे मैन पेज के साथ एक ही समस्या थी - चाल 'आदमी strftime' है – sage

5

दूसरों के लिए ISO8601 कर रही है, आप किसी भिन्न रूप को चुन सकते हैं:

date +%Y%m%dT%H%M%S%z  # 20140809T092143-0700 
date -u +%Y%m%dT%H%M%S%z # 20140809T162143+0000 
date -u +%Y%m%dT%H%M%SZ # 20140809T162143Z 

मैं क्योंकि विराम चिह्न का समर्थन करता है की कमी उन चाहते सार्वभौमिक उपयोग ध्यान दें कि पूंजी जेड यूटीसी के लिए 'हार्ड-कोडेड' है -% Z का उपयोग करके यूटीसी या अन्य नामित टाइमज़ोन लगाया जाएगा। आप चाहें, तो विराम चिह्न:

date +%Y-%m-%dT%H:%M:%S%z  # 2014-08-09T09:21:43-0700 
date +%Y-%m-%dT%H:%M:%S%:z  # 2014-08-09T09:21:43-07:00 - NOT ALL SYSTEMS 
date -u +%Y-%m-%dT%H:%M:%S%z # 2014-08-09T16:21:43+0000 
date -u +%Y-%m-%dT%H:%M:%S%:z # 2014-08-09T16:21:43+00:00 - NOT ALL SYSTEMS 
date -u +%Y-%m-%dT%H:%M:%SZ # 2014-08-09T16:21:43Z 

man strftime से परामर्श के रूप में समर्थित स्वरूपों बदलती हैं। उदाहरण के लिए, कुछ सिस्टम%: z,% :: z, या% ::: z का उपयोग करके ऑफ़सेट में कॉलन डालने का समर्थन करते हैं - मेरे पांच सिस्टमों में से केवल दो (डेबियन, उबंटू डू, लेकिन मैक, BusyBox, QNX नहीं करते हैं) ।

और मैं अक्सर संदर्भ के लिए https://en.wikipedia.org/wiki/ISO_8601 पर वापस जाता हूं।

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