पर्ल में, यूनिक्स के दिनांक कमांड के आउटपुट को समय-समय पर ले जाने और यूटीसी में कनवर्ट करने के लिए कोई कुशलतापूर्वक विश्लेषण कैसे करेगा?मैं पर्ल में यूटीसी में कई समय क्षेत्रों में यूनिक्स दिनांक आउटपुट को कैसे परिवर्तित कर सकता हूं?
मैंने स्टैक ओवरफ्लो पर कई समान प्रश्न पढ़े हैं, लेकिन कुछ कई समय क्षेत्रों को पार्स करने में लगते हैं। इसके बजाय वे मैन्युअल रूप से टाइमज़ोन सेट करते हैं और इसे निश्चित रहने के लिए मानते हैं।
foreach my $input (@inputs) {
my $t = Time::Piece->strptime($input,
'%a %b %d %T %Z %Y');
print $t->cdate, "\n";
}
ऐसा लगता है समस्या समय क्षेत्र (% जेड) है:
# Example Input Strings:
my @inputs = (
'Tue Oct 12 06:31:48 EDT 2010',
'Tue Oct 12 07:49:54 BST 2010',
);
मैं कोई लाभ नहीं हुआ निम्नलिखित की कोशिश की। इसके अतिरिक्त, टाइम ज़ोन फ़ील्ड टाइम :: टुकड़ा में मौजूद नहीं प्रतीत होता है, जिसके लिए मुझे यूटीसी में कनवर्ट करने के लिए कस्टम कोड लिखने की आवश्यकता होगी, जो कि लगता है ... गलत।
संदर्भ: मैं टाइमस्टैम्प के लिए यूनिक्स दिनांक कमांड का उपयोग करने वाले विभिन्न स्रोतों से विरासत लॉग का विश्लेषण करने का प्रयास कर रहा हूं। आदर्श रूप से, मैं सभी टाइमस्टैम्प को यूटीसी में परिवर्तित करना चाहता हूं।
किसी भी मदद की सराहना की जाएगी।
आपके पास यहां होने वाली मौलिक समस्या यह है कि 3-अक्षर टाइमज़ोन संक्षेप अद्वितीय नहीं हैं। "ईएसटी" का अर्थ इस बात पर निर्भर करता है कि आप किस देश में हैं। – cjm
अस्पष्टता को इंगित करने के लिए धन्यवाद। मैं जो सही जानता हूं उसे बदल सकता हूं (EST5EDT उस लॉग के लिए सही है)। हालांकि, मुझे अभी भी यकीन नहीं है कि टाइमज़ोन निकालने के लिए कस्टम कोड लिखने के बिना टाइमज़ोन कैप्चर करना है और फिर मेरे मॉड्यूल के विकल्प में मैन्युअल रूप से समय क्षेत्र सेट करना है (डेटटाइम काफी अच्छा दिख रहा है), उम्मीद है कि मैं सही स्ट्रिंग पर मैप करता हूं। – vlee