2012-10-12 12 views

risposta

31

Derivato dal vostro esempio che hai fornito un po 'tardi

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

se si tratta di un oggetto datetime

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

se hai già come una stringa

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

'\ a \ t' restituisce' a' per me. Metti un altro '\ a \\ t' funziona, però. – rybo111

+1

Questo perché mentre 't' è un elemento stringa' date' (numero di giorni in un dato mese), sfuggendolo come '\ t' emette una scheda. Questo ha quindi bisogno di una fuga in più! – Ben

+0

'\ a \ t' funziona in questo modo come' a \\ t' –

7

voi sì può.

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

Forse cambia questo in '$ display = $ date. ' a '. $ time;' Notare gli spazi intorno a 'at'. –

0

Prima si prega di mettere la data indicata in formato ISO in modo che strtotime() può leggerlo e quindi utilizzare date() funzione per formattare la data di conseguenza.

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

Stranamente ho voluto mettere

date("l the jS F Y");

a leggere per esempio Lunedì 9 gennaio 2017, invece ho ricevuto "Monday 3106UTC 9th January 2017". Ho letto la risposta sopra da xception e l'ho modificata in date("l \t\h\e jS F Y"), che mi ha dato "lunedì 9 gennaio 2017", quindi ho letto il commento da rybo111 e lo ho modificato in date("l \t\\h\\e jS F Y") e ancora non funzionava come ora ho ricevuto "Lunedì 9 gennaio 2017 ".

Dopo un po 'di testa di graffiare ho lavorato che se lettere della parola fanno anche parte della funzione data(), ad esempio t = numero di giorni del mese dato, questi devono essere doppio sfuggito, altrimenti un una singola via di fuga sarà sufficiente. Quindi perché "at" deve essere codificato \a\\t e "the" come \\t\\h\\e.