2011-10-06 36 views
12

¿Existe alguna manera fácil de obtener el formato correcto para un iCal DTSTART utilizando la fecha php?PHP Fecha en el formato de fecha iCal para DTSTART

Necesito el formato para que se vea así: 20111008T110000 o 20111008 (ese es fácil) si no tengo tiempo.

¿La fecha de PHP tiene una forma rápida de hacerlo, específicamente una que agrega el tiempo o la elimina cuando es necesario?

+0

PHP date es una marca de tiempo, siempre contiene el tiempo incl. segundos. ¿Qué estás buscando? – hakre

+0

Creo que las respuestas a continuación brindan lo que estaba buscando. –

Respuesta

18

No conozco ninguna función PHP nativa o formato de fecha, por lo que deberá crear su propia función. Algo como esto:

function getIcalDate($time, $incl_time = true) 
{ 
    return $incl_time ? date('Ymd\THis', $time) : date('Ymd', $time); 
} 

Como hakre señaló en un comentario, el formateador fecha no puede distinguir entre una fecha con el tiempo y una fecha sin tiempo - usted tiene que decidir la lógica detrás de eso.

+0

¿no te falta una Z al final? –

+6

@DanyKhalife: Según el [RFC] (http://www.ietf.org/rfc/rfc2445.txt), hay varios formularios aceptados para el valor de la fecha y hora. El que no tiene 'Z' se conoce como "fecha con hora local", lo que significa que no hay información de zona horaria asociada a él. Al agregar una 'Z' posterior, se pone la fecha y hora en UTC ("fecha con hora UTC"). Por último, puede definir la zona horaria explícitamente ("fecha con hora local y referencia de zona horaria"). – Viktor

+0

oh genial, eso es bueno saber, debería pasar más tiempo leyendo esos detalles: D –

-2

Esto puede ser que usted está buscando link y this también puede ayudarlo.

Función mktime para hacer la marca de tiempo como desee, incluyendo el tiempo o solo la fecha.

+0

Abajo, la pregunta estaba pidiendo formato de hora para DTSTART según http://tools.ietf.org/html/rfc2445 – AshHimself

+0

También poner enlaces no es una buena manera de responder. Los enlaces pueden quedar obsoletos o interrumpirse con el tiempo. – ionize

4
date('Ymd\THis', time()) 

Puede reemplazar time() con su propia marca de tiempo.