2013-10-13 9 views
8

Ich habe diese Zeichenfolge zu: „13/10 15:00“ und ich würde es aber zeitzustempeln umwandeln möge, wenn ich dies tun:diese Zeichenfolge konvertieren PHP

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

Es gibt einen leeren Wert.

+0

strtotime nicht unfehlbar ist - wenn Sie das Format kennen, sollten Sie verwenden [DateTime :: createFromFormat] (http://php.net/manual/en/datetime.createfromformat.php) (verfügbar ab PHP 5.3.x) oder ähnlich. (Sie müssen auch das fehlende Jahr angeben.) –

+0

Ihr Format wird nicht unterstützt! http://www.php.net/manual/en/datetime.formats.compound.php – WebNovice

+0

Ihre Zeichenfolge ist kein genau definiertes Datum oder Uhrzeit –

Antwort

34

In Ihrem Code strtotime() versucht 13/10 als am zehnten Tag des 13. Monats zu konvertieren, die einen Fehler zurückgibt.

Wenn Sie ein Datum Zeichenfolge mit einem benutzerdefinierten Format analysieren wollen, ist es besser, Datetime zu verwenden :: createFromFormat() statt:

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

'$ timestamp' Variable enthält DateTime-Objekt, nicht Timestamp. Um Zeitstempel zu erhalten, benutzen Sie '$ timestamp-> getTimestamp();' oder '$ timestamp-> format ('U');' –

+0

@ Glavić Wahrlich genug - immer noch zuverlässiger als 'strtotime()'. Vielen Dank. –

+6

Link zur Dokumentation: http://php.net/manual/en/datetime.createfromformat.php – Doug

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

Dies kann wichtig sein:

Daten in m/d/y oder DMY Formate werden, indem man den Separator zwischen den verschiedenen Komponenten disambiguiert: Wenn der Separator eine ist Strich (/), dann wird das amerikanische m/d/y angenommen; wohingegen, wenn der Separator ein Strich (-) oder ein Punkt (.) ist, das europäische d-m-y-Format angenommen wird.

Um mögliche Mehrdeutigkeiten zu vermeiden, empfiehlt es sich, möglichst ISO 8601 (JJJJ-MM-TT) Datumsangaben oder DateTime :: createFromFormat() zu verwenden.

http://uk3.php.net/strtotime