2013-02-25 12 views

cevap

12

Bunun için localtime kullanabilirsiniz.

my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($unix_timestamp); 
+0

teşekkürler ama ben '$ Zamanı 'dizisinde vereceğini, Evet – hurley

+0

saklamak istiyorum. Bundan sonra saat, örneğin $ zamanında [2] 'dir. – Andomar

+0

teşekkürler, ancak biçimlendirilmiş tarihi doğrudan tek bir değişkende saklamak istiyorum. bunun için herhangi bir olasılık görüyor musunuz? Geçerli çözümüm geçerli tarihi kaydetmek için, verilen zaman damgası ne olursa olsun – hurley

12

Sen

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); 

kullanabilirsiniz Ama strftime ile biraz basittir: daha uygun olmadığını

use POSIX qw(strftime); 
my $dt = strftime("%Y-%m-%d %H:%M:%S", localtime($time)); 

localtime($time)gmtime($time) ile ikame edilebilir.

15

Time::Piece için mükemmel bir kullanım (standart 5.10'dan beri Perl'de standarttır).

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 
+0

''% f% T'' benim için çalışmaz (belki benim yerimden dolayı), ancak '% Y-% m-% d'' çalışır. –

22

Hızlı kabuk tek satırlık:

perl -le 'print scalar localtime 1357810480;' 
Thu Jan 10 10:34:40 2013 

Veya, her satırda bir tane, bir dosyada damgaları için ne varsa: Bir varsa,

perl -lne 'print scalar localtime $_;' <timestamps 
+0

zarif ve basit –

+2

Bu kabul edilen cevap olmalıdır. Diğerleri, insanlar tarihlerinde daha fazla derinlik istediğinde kullanılabilir. Sadece bir zaman damgasına bakmak için, skaler localtime, bitti. – felwithe

4

Ya Katıştırılmış zaman damgaları ile dosya, bunları aşağıdaki yerle dönüştürebilirsiniz:

$ cat [file] | perl -pe 's/([\d]{10})/localtime $1/eg;' 
+1

Tam olarak ihtiyacım olan buydu! Sadece günlük dosyamı bu tek liner ve BINGO anlık tarih/zamanlarına bağlayabilirim. – rob

0

JDawg'ın cevabını beğendim ama üzerinde çalıştığım bir RHEL sisteminde düzgün çalışmasını sağlayamadım. Bunu işe alabiliyordum. Umarım bu birisine yardım eder. Bir dosyanın içeriğini dönüştürülmüş zaman damgalarını yerinde gösterir.

cat filename | perl -pe 's/(\d+)/localtime($1)/e'

İlgili konular