2008-10-05 23 views

cevap

31
use POSIX qw(strftime); 
print strftime("%a, %d %b %Y %H:%M:%S %z", localtime(time())) . "\n"; 
+0

Oh, güzel, çekirdeğin içinde bunu yapacak bir şey olduğunu bilmiyordum. –

+0

Teşekkür ederim, bu tam olarak, ne zaman zarif bir şekilde istediğimde aradığım şey oldu :) –

+0

Umm, Bence daha fazla işe yaramaz. ActivePerl 5.16 ile bu strftime ('% a,% d% b% Y% H:% M:% S% z', localtime (time())); verimleri, Per, 14 Kas 2013 09:46:00 E. Avustralya Standart Saati' kesinlikle yanlıştır. Lütfen RFC 2822'ye başvurunuz 3.3. Tarih ve Saat Belirtimi. – AlwaysLearning

14

DateTime süit farklı şekillerde bir dizi örn verir:

use DateTime; 
print DateTime->now()->strftime("%a, %d %b %Y %H:%M:%S %z"); 

use DateTime::Format::Mail; 
print DateTime::Format::Mail->format_datetime(DateTime->now()); 

print DateTime->now(formatter => DateTime::Format::Mail->new()); 

Güncelleme: ( için şimdi bir TIME_ZONE argüman eklemek, bazı belirli Zaman dilimi için zaman vermek):

DateTime->now(time_zone => $ENV{'TZ'}, ...) 
4

strftime ile yapılabilir, ancak %a (gün) ve %b (ay) geçerli dilde ifade edilir. yerel ayar. man strftime itibaren

:

% a Yerele özgü kısaltılmış gün ismi.
% b Geçerli yerel ada göre kısaltılmış ay adı.

posta zorunluluk kullanım (rfc2822 DATE AND TIME SPECIFICATION itibaren) sadece bu isimler Tarih alanı:

use POSIX qw(strftime locale_h); 

my $old_locale = setlocale(LC_TIME, "C"); 
my $date_rfc822 = strftime("%a, %d %b %Y %H:%M:%S %z", localtime(time())); 
setlocale(LC_TIME, $old_locale); 

print "$date_rfc822\n"; 
+0

Bu cevap en yüksek sıralamasından daha iyidir. Ancak, "localtime()" içindeki time() 'işlevine yapılan çağrı gereksizdir (varsayılan argüman). – neuhaus