2008-10-05 3 views

답변

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

오, 좋았어, 이걸 할 코어에 뭔가가 있다는 것을 몰랐어. –

+0

고맙습니다. 이것은 정확히 내가 우아한 방법을 요구했을 때 찾고 있던 것입니다. –

+0

음, 더 이상 생각하지 않습니다. ActivePerl 5.16을 사용하면이'strftime ('% a, % d % b % Y % H : % M : % S % z', localtime (time())); 'yields'Thu, 14 Nov 2013 09:46:00 E. 오스트레일리아 표준시'는 틀 렸습니다. RFC 2822 3.3을 참조하십시오. 날짜 및 시간 지정. – AlwaysLearning

14

날짜 시간 스위트는 당신에게 여러 가지 방법으로, 예를 들면 제공 :

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

업데이트 : ( 에 지금 TIME_ZONE 인수를 추가, 일부 특정 시간대의 시간을 제공하기 위해) :

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

strftime으로 수행 할 수 있지만 %a (일) 및 %b (달)은 현재의 언어로 표시됩니다 로케일. man strftime에서

:

% 상기 현재 지역에 맞는 약식 요일 이름.
% b 현재 로켈에 따른 축약 된 월 이름입니다.

메일 해야 사용 (rfc2822 DATE AND TIME SPECIFICATION에서)에만이 이름의 날짜 필드 :

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

이 답변은 최상위 순위보다 낫습니다. 그러나'localtime()'내부의'time() '호출은 불필요합니다 (기본 인수). – neuhaus

관련 문제