2008-10-05 6 views

Respuesta

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

Oh, qué bueno, no sabía que hubiera algo en el núcleo que hiciera esto. –

+0

Gracias, esto es exactamente lo que estaba buscando cuando pedí una forma elegante :) –

+0

Umm, no creo que eso funcione más. Con ActivePerl 5.16 este 'strftime ('% a,% d% b% Y% H:% M:% S% z', localtime (time()))' produce 'Jue, 14 Nov 2013 09:46:00 E. Australia Standard Time' que definitivamente está mal. Por favor, consulte RFC 2822 3.3. Especificación de fecha y hora. – AlwaysLearning

14

La suite DateTime le da un número de maneras diferentes, por ejemplo:

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

Actualización: para dar tiempo a alguna zona horaria en particular, añadir un argumento time_zone ahora():

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

Se puede hacer con strftime, pero su %a (día) y %b (mes) se expresan en el idioma de la corriente locale

De man strftime:

% a El nombre del día abreviado de acuerdo con la localización actual.
% b El nombre abreviado del mes de acuerdo con la configuración regional actual.

el campo de fecha en el correo necesidad uso sólo estos nombres (de rfc2822 DATE AND TIME SPECIFICATION):

day   = "Mon"/"Tue"/"Wed"/"Thu"/"Fri"/"Sat"/"Sun" 

month  = "Jan"/"Feb"/"Mar"/"Apr"/"May"/"Jun"/
       "Jul"/"Aug"/"Sep"/"Oct"/"Nov"/"Dec" 

código Por lo tanto portátil debe cambiar a la C local:

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

Esta respuesta es mejor que la más alta. Sin embargo, la llamada a 'time()' dentro de 'localtime()' no es necesaria (es el argumento predeterminado). – neuhaus

Cuestiones relacionadas