2012-10-12 21 views

Odpowiedz

31

Pochodzące z przykładu, który podałeś trochę późno

echo date('d-m-Y \a\t H:i:s') . ' hours'; 

czy jest to obiekt datetime

echo $datetime->format('d-m-Y \a\t H:i:s') . ' hours'; 

jeśli już to jako ciąg

echo str_replace(' ', ' at ', $datetime) . ' hours'; 
+14

'\ a \ t' zwraca' a' dla mnie. Załóżmy jednak, że działa jeszcze '\ a \\ t'. – rybo111

+1

Dzieje się tak dlatego, że '' t' jest elementem ciągu 'date' (liczba dni w danym miesiącu), z którego wychodzi, gdy' \ t' wyświetla zakładkę. To wymaga dodatkowego ucieczki! – Ben

+0

'\ a \ t 'działa dla mnie, więc' a \\ t' –

7

Tak mogą.

$date=date("m-d-Y"); 
$time=date("H:i:s"); 
$display=$date.'at'.$time; 
+1

Być może zmień to na '$ display = $ date.' at '. $ time; 'Zwróć uwagę na spacje wokół' at'. –

0

Najpierw należy umieścić daną datę w formacie ISO, tak aby strtotime() może go odczytać, a następnie użyj funkcji date() formatować datę odpowiednio.

date('/*DATE FORMAT YOU WANTED*/', strtotime('/*ISO FORMATTED DATE*/')); 
3

dziwo chciałem umieścić

date("l the jS F Y");

czytać np Poniedziałek, 9 stycznia 2017 r., Ale zamiast tego dostałem "Poniedziałek 3106UTC 9 stycznia 2017 r.". Przeczytałem powyższą odpowiedź z xception i zmieniłem ją na date("l \t\h\e jS F Y"), co dało mi "poniedziałek h 9 stycznia 2017", więc przeczytałem komentarz z rybo111 i zmieniłem go na date("l \t\\h\\e jS F Y") i nadal nie działało, jak teraz mam "poniedziałek on 9 stycznia 2017 r. ".

Po odrobinie drapania głowy stwierdziłem, że jeśli litery w słowie również stanowią część funkcji date(), na przykład t = liczba dni w danym miesiącu, muszą być podwójne ucieczki, w przeciwnym razie wystarczy jedna ucieczka. Stąd dlaczego "na" musi być kodowany \a\\t i "the" jako \\t\\h\\e.

Powiązane problemy