2013-10-13 21 views
8

ho questa stringa: "13/10 15:00" e vorrei convertirlo in timestamp, ma quando faccio questo:Convertire questa stringa a timestamp PHP

 $timestamp = strtotime("13/10 15:00"); 

Esso restituisce un valore vuoto.

+0

strtotime non è infallibile - se si conosce il formato, è necessario utilizzare [DateTime :: createFromFormat] (http://php.net/manual/en/datetime.createfromformat.php) (disponibile da PHP 5.3.xe versioni successive) o simile. (Dovrai anche fornire l'anno mancante.) –

+0

Il tuo formato non è supportato! http://www.php.net/manual/en/datetime.formats.compound.php – WebNovice

+0

la tua stringa non è una data o un'ora ben definita –

risposta

34

Nel codice strtotime() sta tentando di convertire 13/10 come il decimo giorno del 13 ° mese, che restituisce un errore.

Se si vuole analizzare una stringa data con un formato personalizzato, è meglio utilizzare DateTime :: createFromFormat() invece:

$dtime = DateTime::createFromFormat("d/m G:i", "13/10 15:00"); 
$timestamp = $dtime->getTimestamp(); 
+0

La variabile '$ timestamp' contiene l'oggetto DateTime, non il timestamp. Per ottenere il timestamp, usa '$ timestamp-> getTimestamp();' oppure '$ timestamp-> format ('U');' –

+0

@ Glavić Vero - ancora più affidabile di 'strtotime()'. Grazie. –

+6

Link alla documentazione: http://php.net/manual/en/datetime.createfromformat.php – Doug

14
$timestamp = strtotime("13-10-2013 15:00"); 

Ciò può essere importante:

date nella m/d formati/y o DMY sono disambiguare cercando in il separatore tra i vari componenti: se il separatore è un barra (/), viene assunto il m/d/y americano; mentre se il separatore è un trattino (-) o un punto (.), viene assunto il formato europeo d-m-y .

Per evitare potenziali ambiguità, è preferibile utilizzare ISO 8601 (AAAA-MM-GG) date o DateTime :: createFromFormat() quando possibile.

http://uk3.php.net/strtotime