2011-10-06 14 views
12

Czy istnieje prosty sposób na uzyskanie prawidłowego formatu iCal DTSTART przy użyciu daty php?Data PHP do formatu daty iCal dla DTSTART

Potrzebuję, aby format wyglądał tak: 20111008T110000 lub 20111008 (ten jest łatwy), jeśli nie mam czasu.

Czy data PHP ma szybki sposób na zrobienie tego, szczególnie, że dodaje czas lub usuwa go w razie potrzeby?

+0

Data PHP to znacznik czasu, zawsze zawiera czas włącznie. sekundy. Czego szukasz? – hakre

+0

Myślę, że poniższe odpowiedzi dostarczają tego, czego szukałem. –

Odpowiedz

18

Nie ma natywnej funkcji PHP lub formatu daty, o których jestem świadomy, więc musisz utworzyć własną funkcję. Coś takiego:

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

Jak hakre zauważył w komentarzu, data formater nie można odróżnić na bieżąco z czasem i datą bez czasu - musisz zdecydować logikę tego.

+0

czy nie brakuje Ci Z na końcu? –

+6

@DanyKhalife: Według [RFC] (http://www.ietf.org/rfc/rfc2445.txt) istnieje kilka akceptowanych formularzy dla wartości daty i godziny. Ten bez "Z" jest określany jako "data z czasem lokalnym", co oznacza, że ​​nie ma powiązanych z nim informacji o strefie czasowej. Dodanie końcowego znaku "Z" powoduje, że data-czas zmienia się na UTC ("data z czasem UTC"). Na koniec możesz zdefiniować strefę czasową jawnie ("data z czasem lokalnym i odniesieniem do strefy czasowej"). – Viktor

+0

o super, to miło wiedzieć, powinienem spędzać więcej czasu czytając te szczegóły: D –

-2

Możliwe, że szukasz również link i this.

Funkcja mktime do tworzenia znacznika czasu, w tym czasu lub tylko daty.

+0

W wyniku głosowania pytanie dotyczyło formatu czasu dla DTSTART zgodnie z http://tools.ietf.org/html/rfc2445 – AshHimself

+0

Również umieszczanie linków nie jest dobrym sposobem na odpowiedź. Linki mogą stać się przestarzałe lub z czasem zerwane. – ionize

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

Możesz zastąpić time() swoim własnym znacznikiem czasu.