2013-05-26 12 views
18

Ho una stringa che è '23/05/2013' e ho voluto creare un nuovo oggetto Data Ora da questo, così ho fatto:Creazione di un nuovo Data Ora da stringa

new \DateTime('23/05/2013'); 

Qualsiasi idea del perché ho che ottiene questo errore per tutto il tempo:

DateTime::__construct(): Failed to parse time string (23/05/2013) at position 0 (2): Unexpected character 
+5

Usa 'DateTime :: createFromFormat() 'in modo da poter specificare il formato. – Barmar

+1

http://php.net/manual/es/function.date-create.php Se si verifica un errore del genere: Eccezione: DateTime :: __ construct(): Impossibile analizzare la stringa del tempo (13/02/2013) nella posizione 0 (1): carattere imprevisto in DateTime -> __ construct() Si noti che quando si crea un nuovo oggetto data utilizzando un formato con barre e trattini deve essere compreso tra mm/gg/aa (aa) mesi sempre prima degli anni (in stile americano) altrimenti riceverai una data errata e potresti avere un errore come quello sopra (dove PHP si arresta nel tentativo di decodificare un tredicesimo mese). – ray

risposta

22

Se si desidera utilizzare l'oggetto normalmente piuttosto che staticamente provare questo:

$datetime = new DateTime(); 
$newDate = $datetime->createFromFormat('d/m/Y', '23/05/2013'); 

quindi è possibile utilizzarlo come normale:

echo $newDate->format('Y-m-d'); 
+1

Questo restituirà la data corrente, invece quella fornita nella funzione createFromFormat. Dovrebbe essere '$ newDate = $ datetime-> createFromFormat ('d/m/Y', '23/05/2013 ');' Come' createFromFormat 'restituisce l'oggetto DateTime. – VDonchev

+0

Heh dopo tutto questo tempo, e sei molto corretto. – Farkie

Problemi correlati