2013-12-13 7 views
17

Purtroppo non è possibile utilizzare DateTime() poiché il server su cui è attivo questo progetto esegue PHP v.5.2.

la linea in questione:

$aptnDate2 = date('Y-m-d', $_POST['nextAppointmentDate']); 

tiri il seguente errore:

Notice: A non well formed numeric value encountered 

così ho VAR discarica per assicurarsi che sia ben formattato ..

var_dump($_POST['nextAppointmentDate']); 

string(10) "12-16-2013" 

Il php docs state che prende un timestamp non una stringa. ma quando lo faccio:

date('Y-m-d', strtotime($_POST['nextAppointmentDate'])); 

e poi var_dump il risultato, ottengo questo:

string(10) "1969-12-31" 

perché non posso formattare un appuntamento con questo valore di data e strtotime()?

grazie!

risposta

43

Dalla documentazione per strtotime():

Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator between the various components: if the separator is a slash (/), then the American m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the European d-m-y format is assumed.

nella stringa data, avete 12-16-2013. 16 non è un mese valido, quindi strtotime() restituisce false.

Poiché non è possibile utilizzare la classe DateTime, è possibile sostituire manualmente il - con / utilizzando str_replace() per convertire la stringa data in un formato che strtotime() comprende:

$date = '2-16-2013'; 
echo date('Y-m-d', strtotime(str_replace('-','/', $date))); // => 2013-02-16 
+0

Cheers mate, che è stato. Potrei avere trattini giurati accettabili, forse è solo con 'DateTime()'? Grazie per l'aiuto. :) – Prefix

+0

@Prefix: se passi una stringa di data formattata in modo errato a 'DateTime', genererà (di solito) un'eccezione. Vedere [la documentazione] (http://www.php.net/manual/en/datetime.formats.date.php) per un elenco di formati di data accettati. Se utilizzi DateTime, allora ** 'DateTime :: createFromFormat()' ** è la strada da percorrere: https://eval.in/79189 –

-4

Il secondo argomento nella funzione date() è unix timestamp, non una stringa di data. Basta usare explode() per dividere la stringa della data e combinarla di nuovo. strtotime non aspettatevi date in tale formato.

Problemi correlati