2014-07-03 6 views
20

में UTC समय ऐसा लगता है कि मैं दूसरे में बैश यूटीसी तिथि पाने के लिए प्रबंधन नहीं कर सकते हो। मैं सिडनी में हूँ तो + 10hours UTC समयबैश दूसरा

date 
Thu Jul 3 17:28:19 WST 2014 

date -u 
Thu Jul 3 07:28:20 UTC 2014 

लेकिन जब मैंने उसे परिवर्तित करने की कोशिश की, मैं एक ही परिणाम है जो UTC समय

date +%s 
1404372514 

date -u +%s 
1404372515 

मैं यहाँ क्या याद आ रही है नहीं है हो रही है?


एक जवाब यह कहते हुए date +%s UTC समय लौट रहा था मिलने के बाद, यहाँ समस्या मैं अब का सामना करना पड़ रहा है के बारे में अधिक विवरण दिए गए हैं।

मैं अजगर के साथ एक फ़ाइल में लिखा एक तारीख की तुलना करने की कोशिश कर रहा हूँ। यह तिथि यूटीसी समय में सेकंड में लिखी गई है। और bash date +%s मुझे वही नहीं देता है। असल में अगर मैं पाइथन time.asctime(time.localtime(date_in_seconds_from_bash)) में कर रहा हूं, तो मुझे सिडनी का वर्तमान समय मिल जाएगा, यूटीसी नहीं। मुझे समझ में नहीं आता

+0

क्या आप दिन की शुरुआत के बाद से सेकंड में समय चाहते हैं? सप्ताह ? महीना ? साल ? –

+0

यह भी समझ में नहीं आता है? 'तिथि +% s' की –

+0

वापसी मान वास्तव में यूटीसी – anubhava

उत्तर

10

मेरा मानना ​​है कि +% s अवधि के बाद सेकंड है। यह टाइमज़ोन invariant है।

+0

वैसे तो यूटीसी सेकंड में तारीख पाने के लिए है? –

+3

@RomanzoCriminale 'करने के लिए तिथि --help' अनुसार:' के बाद से 1970-01-01 00:00:00 UTC'% s सेकंड। '-u' जोड़ना कोई फर्क नहीं पड़ता है। यह अभी भी यूटीसी के आधार पर प्रिंट होगा। यही कारण है कि आप एक ही मूल्य प्राप्त कर रहे थे। – konsolebox

+1

उपरोक्त आपके दोनों उत्तर सही हैं। यूटीसी सेकेंड दुनिया में कहीं भी वही है, और यह अवांछित टाइमस्टैम्प के लिए उपयोगी है। सिडनी में 1 9 70 के मध्यरात्रि के बाद से दूसरी बार उस समय और यूटीसी शून्य समय (-ग्रा 11 या इतने घंटे मुझे लगता है) के बीच अंतर लेकर गणना की जा सकती है, लेकिन वह संख्या शायद आप जो चाहते हैं वह नहीं है। – JamesNoonan33

5

आप कहते हैं कि आप उपयोग कर रहे:

time.asctime(time.localtime(date_in_seconds_from_bash)) 

जहां date_in_seconds_from_bash शायद date +%s का उत्पादन होता है।

time.localtime फ़ंक्शन, जैसा कि नाम का तात्पर्य है, आपको स्थानीय समय देता है।

आप यूटीसी चाहते हैं, time.gmtime() बजाय time.localtime() का उपयोग करें।

JamesNoonan33's answer के रूप में कहते हैं, date +%s के उत्पादन में समय क्षेत्र अपरिवर्तनीय है, इसलिए date +%s बिल्कुल date -u %s के बराबर है। यह "युग" के बाद से सेकंड की संख्या प्रिंट करता है, जो 1970-01-01 00:00:00 UTC है। आपके प्रश्न में जो आउटपुट दिखाया गया है वह पूरी तरह से संगत है:

date -u 
Thu Jul 3 07:28:20 UTC 2014 

date +%s 
1404372514 # 14 seconds after "date -u" command 

date -u +%s 
1404372515 # 15 seconds after "date -u" command 
5

मुझे लगता है कि परिणामस्वरूप इसका उद्देश्य क्या था।

$ date -u [email protected] 
Thu Jul 3 07:28:34 UTC 2014 
संबंधित मुद्दे