टाइमस्टैम्प के टाइमज़ोन को बैश में बदलें


4

मेरे पास एक दिनांक / समय स्ट्रिंग है जिसे फ़ाइल नाम से निकाला जाता है। मुझे पता है कि टाइमस्टैम्प को टाइम ज़ोन ए का उपयोग करते हुए लिखा गया था और मुझे आगे की प्रक्रिया के लिए इसे टाइम ज़ोन बी में बदलने की आवश्यकता है। क्या यह बाश में संभव है?

उदाहरण के लिए:

filenameTimestamp="2015-01-20 18:05:02"
timezoneA="Australia/Sydney"
timezoneB="Australia/Brisbane"

मुझे लगता है कि मुझे समय क्षेत्र ए का उपयोग करके स्ट्रिंग को पार्स करना होगा और फिर समय क्षेत्र बी का उपयोग करके इसे फिर से स्ट्रिंग में आउटपुट करना होगा।


1
सिडनी और ब्रिसबेन एक ही TZ में नहीं हैं? UTC +10।
एलेक्स एटकिंसन

नहीं, sydney में दिन के समय की बचत का समय होता है और गर्मियों में 1 घंटे अलग होता है
pstanton

मुझे उदाहरण में सॉरी टाइमस्टैम्प का उपयोग करना चाहिए था क्षमा करें!
pstanton

जवाबों:


7

सिडनी में लॉस एंजिल्स, यूएसए में तारीख की व्याख्या करने के लिए:

$ sec=$(TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02")
$ TZ="America/Los_Angeles" date -d "@$sec"
Wed May 20 01:05:02 PDT 2015

यहाँ ब्रिस्बेन के लिए परिणाम है:

$ TZ="Australia/Brisbane" date -d "@$sec"
Wed May 20 18:05:02 AEST 2015

यह काम किस प्रकार करता है

  • TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02"

    यह अस्थायी रूप से सिडनी को टाइमज़ोन सेट करता है और "2015-05-20 18:05:02" की तारीख को युगांतर (यूटीसी) के बाद से सेकंड में परिवर्तित करता है।

  • sec=$(TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02")

    यह शेल चर में युग (UTC) के बाद से सेकंड में समय बचाता है sec

  • TZ="America/Los_Angeles" date -d "@$sec"

    यह अस्थायी रूप से लॉस एंजिल्स के लिए समय क्षेत्र निर्धारित करता है और इसके द्वारा दी गई तारीख की व्याख्या करता है sec

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.