obtener now formato fecha español date_format actual php http date rfc

now - php fecha actual español



El formato de fecha/hora utilizado en los encabezados HTTP (3)

Bueno, echemos un vistazo a RFC 2616 que define HTTP 1.1: http://tools.ietf.org/html/rfc2616#section-3.3

Las aplicaciones HTTP históricamente han permitido tres formatos diferentes para la representación de sellos de fecha / hora:

Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 Sun Nov 6 08:49:37 1994 ; ANSI C''s asctime() format

El primer formato se prefiere como estándar de Internet y representa un subconjunto de longitud fija del definido por RFC 1123 [8] (una actualización de RFC 822 [9]).

(...)

Todas las marcas de fecha / hora HTTP DEBEN estar representadas en la hora del meridiano de Greenwich (GMT), sin excepción.

Entonces DateTime::COOKIE o Datetime::RFC850 usan un formato válido. El preferido de acuerdo con el RFC sería D, d MYH:i:s T que no está definido por ninguna constante en la clase DateTime .

Para asegurarse de que se utiliza GMT, el siguiente código debería ser suficiente:

gmdate(''D, d M Y H:i:s T'');

¿Qué RFC describe el formato utilizado para fecha / hora en los encabezados HTTP de tiempo moderno, como "Last-Modified" y "If-Modified-Since", y cómo generar una cadena de fecha / hora en PHP según dicho formato?

Algunas fuentes apuntan a RFC 2822, que, como lo indica la clase DateTime , usa el formato D, d MYH:i:s O , pero a partir de mis pruebas, este formato produce +0000 lugar de GMT al final. Probé otros especificadores de zona horaria pero ninguno de ellos parece poner GMT al final, el resultado más cercano que obtuve fue con UTC . Sin embargo, como lo mostró Firebug, todos los sitios están utilizando GMT en encabezados HTTP y no en +0000 o UTC .

Entonces, ¿qué formato se usa realmente y cómo formateo la fecha / hora de la misma manera que lo hacen otros sitios?


Como puede ver here , el encabezado Last-Modified tiene fechas en formato RFC2616 .

En la sección 14.29 Last-Modified , puede ver que el formato de fecha debe ser:

"Last-Modified" ":" HTTP-date

Un ejemplo de su uso es

Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT

Otra cita de RFC2616 lee más :

Todas las marcas de fecha / hora HTTP DEBEN estar representadas en la hora del meridiano de Greenwich (GMT), sin excepción.

En PHP puede usar el formato D, d MYH:i:s T si usa la función gmdate() que siempre devuelve datetime en GMT offset / timeszone:

echo gmdate(''D, d M Y H:i:s T'');

Si desea usar la extensión DateTime :

$dt = new DateTime(''UTC''); #$dt = new DateTime(''2013-01-01 12:00:00'', new DateTimezone(''UTC'')); echo $dt->format(''D, d M Y H:i:s /G/M/T'');


Estoy bastante seguro de que la (correcta) respuesta aquí es tools.ietf.org/html/rfc7231#section-7.1.1.1 Especifica Formatos de Fecha / Hora y es donde se define la semántica de la HTTP-date .

HTTP-date = IMF-fixdate / obs-date

También podemos ver que

Cuando un emisor genera un campo de encabezado que contiene una o más marcas de tiempo definidas como fecha HTTP , el remitente DEBE generar esas marcas de tiempo en el formato FITIM-fixdate .

Entonces, para un servidor que envía un "encabezado HTTP de tiempo moderno", donde el valor es una HTTP-date el formato es equivalente al formato IMF-fixdate .

Entonces para responder la pregunta real.

¿Qué RFC describe el formato utilizado para fecha / hora en los encabezados HTTP de tiempo moderno?

Necesita conocer la definición de fecha IMF-fixdate del IMF-fixdate , que se encuentra en rfc7231. También proporciona la definición de obs-date es decir, rfc850-date / asctime-date

IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT ; fixed length/zone/capitalization subset of the format ; see Section 3.3 of [RFC5322] day-name = %x4D.6F.6E ; "Mon", case-sensitive / %x54.75.65 ; "Tue", case-sensitive / %x57.65.64 ; "Wed", case-sensitive / %x54.68.75 ; "Thu", case-sensitive / %x46.72.69 ; "Fri", case-sensitive / %x53.61.74 ; "Sat", case-sensitive / %x53.75.6E ; "Sun", case-sensitive date1 = day SP month SP year ; e.g., 02 Jun 1982 day = 2DIGIT month = %x4A.61.6E ; "Jan", case-sensitive / %x46.65.62 ; "Feb", case-sensitive / %x4D.61.72 ; "Mar", case-sensitive / %x41.70.72 ; "Apr", case-sensitive / %x4D.61.79 ; "May", case-sensitive / %x4A.75.6E ; "Jun", case-sensitive / %x4A.75.6C ; "Jul", case-sensitive / %x41.75.67 ; "Aug", case-sensitive / %x53.65.70 ; "Sep", case-sensitive / %x4F.63.74 ; "Oct", case-sensitive / %x4E.6F.76 ; "Nov", case-sensitive / %x44.65.63 ; "Dec", case-sensitive year = 4DIGIT GMT = %x47.4D.54 ; "GMT", case-sensitive time-of-day = hour ":" minute ":" second ; 00:00:00 - 23:59:60 (leap second) hour = 2DIGIT minute = 2DIGIT second = 2DIGIT Obsolete formats: obs-date = rfc850-date / asctime-date rfc850-date = day-name-l "," SP date2 SP time-of-day SP GMT date2 = day "-" month "-" 2DIGIT ; e.g., 02-Jun-82 day-name-l = %x4D.6F.6E.64.61.79 ; "Monday", case-sensitive / %x54.75.65.73.64.61.79 ; "Tuesday", case-sensitive / %x57.65.64.6E.65.73.64.61.79 ; "Wednesday", case-sensitive / %x54.68.75.72.73.64.61.79 ; "Thursday", case-sensitive / %x46.72.69.64.61.79 ; "Friday", case-sensitive / %x53.61.74.75.72.64.61.79 ; "Saturday", case-sensitive / %x53.75.6E.64.61.79 ; "Sunday", case-sensitive asctime-date = day-name SP date3 SP time-of-day SP year date3 = month SP ( 2DIGIT / ( SP 1DIGIT )) ; e.g., Jun 2