में यूनिक्स टाइमस्टैम्प को एक पठनीय तिथि में कनवर्ट करें मेरे पास कुछ यूनिक्स टाइमस्टैम्प हैं (उदाहरण के लिए, 1357810480, इसलिए वे मुख्य रूप से अतीत में हैं)। मैं उन्हें पर्ल का उपयोग करके एक पठनीय दिनांक-प्रारूप में कैसे बदल सकता हूं?पर्ल
पर्ल
उत्तर
आप इसके लिए localtime
का उपयोग कर सकते हैं।
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($unix_timestamp);
आप
my ($S, $M, $H, $d, $m, $Y) = localtime($time);
$m += 1;
$Y += 1900;
my $dt = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $Y,$m, $d, $H, $M, $S);
इस्तेमाल कर सकते हैं लेकिन यह strftime
साथ थोड़ा आसान है:
use POSIX qw(strftime);
my $dt = strftime("%Y-%m-%d %H:%M:%S", localtime($time));
localtime($time)
अगर यह अधिक उपयुक्त है gmtime($time)
के साथ प्रतिस्थापित किया जा सकता है।
Time::Piece (5.10 से पर्ल में मानक) के लिए एकदम सही उपयोग।
use 5.010;
use Time::Piece;
my $unix_timestamp = 1e9; # for example;
my $date = localtime($unix_timestamp)->strftime('%F %T'); # adjust format to taste
say $date; # 2001-09-09 02:46:40
''% f% टी' मेरे लिए काम नहीं करता है (शायद मेरे लोकेल की वजह से), लेकिन '% Y-% m-% d'' काम करता है। –
त्वरित खोल एक लाइनर:
perl -le 'print scalar localtime 1357810480;'
Thu Jan 10 10:34:40 2013
या, यदि आप एक फ़ाइल में टाइम स्टाम्प्स के लिए प्रत्येक पंक्ति में एक होगा यदि:
perl -lne 'print scalar localtime $_;' <timestamps
सुरुचिपूर्ण और सरल –
यह स्वीकार्य उत्तर होना चाहिए। दूसरों का उपयोग तब किया जा सकता है जब लोग अपनी तिथियों में अधिक गहराई चाहते हैं। सिर्फ टाइमस्टैम्प को देखने के लिए, 'स्केलर लोकटाइम' किया गया। – felwithe
या, यदि आप एक है एम्बेडेड टाइमस्टैम्प के साथ फ़ाइल, आप उन्हें जगह में बदल सकते हैं:
$ cat [file] | perl -pe 's/([\d]{10})/localtime $1/eg;'
वही था जो मुझे चाहिए था! मैं बस अपनी लॉग फ़ाइल को उस पर्ल वन-लाइनर और बिंगो तत्काल दिनांक/समय में पाइप कर सकता हूं। – rob
मुझे जेडॉग का जवाब पसंद आया लेकिन मैं जिस आरएचईएल सिस्टम पर काम कर रहा था उस पर ठीक से काम नहीं कर सका। मैं इसे काम करने में सक्षम था। उम्मीद है कि यह किसी की मदद करेगा। यह बदले गए टाइमस्टैम्प के साथ फ़ाइल की सामग्री प्रदर्शित करता है।
cat filename | perl -pe 's/(\d+)/localtime($1)/e'
धन्यवाद, लेकिन मैं – hurley
स्टोर करने के लिए हाँ, यह '$ time' में सरणी डाल करना चाहते हैं। उसके बाद घंटा '$ 2 [2] 'उदाहरण के लिए है। – Andomar
धन्यवाद, लेकिन मैं स्वरूपित दिनांक को सीधे एक ही चर में संग्रहीत करना चाहता हूं। क्या आप इसके लिए कोई संभावना देखते हैं? मेरा वर्तमान समाधान वर्तमान दिनांक को सहेजने लगता है, भले ही दिया गया टाइमस्टैम्प कितना पुराना है – hurley