2011-10-06 13 views
12

C'è un modo semplice per ottenere il formato corretto per un DTSTART iCal utilizzando la data del php?PHP Data in formato data iCal per DTSTART

Ho bisogno che il formato sia simile: 20111008T110000 o 20111008 (quello è facile) se non ho tempo.

Data PHP ha un modo rapido per farlo, in particolare uno che aggiunge il tempo o lo rimuove quando necessario?

+0

La data di PHP è un timestamp, contiene sempre il tempo incl. secondi. Che cosa sta cercando? – hakre

+0

Penso che le risposte qui sotto forniscano quello che stavo cercando. –

risposta

18

Non c'è alcuna funzione PHP nativa o formato di data di cui sono a conoscenza, quindi è necessario creare la propria funzione. Qualcosa di simile a questo:

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

Come hakre rilevare in un commento, la data di formattazione non può distinguere tra una data con il tempo e una data senza il tempo - si dovrà decidere la logica dietro questo.

+0

non ti manca una Z alla fine? –

+6

@DanyKhalife: in base alla [RFC] (http://www.ietf.org/rfc/rfc2445.txt), esistono diversi moduli accettati per il valore data-ora. Quello senza "Z" viene definito "data con ora locale", il che significa che non vi sono informazioni sul fuso orario ad esso associate. L'aggiunta di una "Z" finale inserisce la data in UTC ("data con ora UTC"). Infine, è possibile definire il fuso orario in modo esplicito ("data con riferimento all'ora locale e al fuso orario"). – Viktor

+0

oh bello, è bello sapere, dovrei passare più tempo a leggere quei dettagli: D –

-2

Questo potrebbe essere quello che stai cercando link e this può anche aiutarti.

Funzione mktime per rendere il timestamp desiderato, includendo l'ora o solo la data.

+0

Giù votati, la domanda chiedeva il formato dell'ora per DTSTART come da http://tools.ietf.org/html/rfc2445 – AshHimself

+0

Anche mettere i link non è un buon modo per rispondere. I collegamenti possono essere obsoleti o interrotti nel tempo. – ionize

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

È possibile sostituire time() con il proprio timestamp.