Is er een eenvoudige manier om een datumnotatie om te zetten in een andere datumnotatie in PHP?
Ik heb dit:
$old_date = date('y-m-d-h-i-s'); // works
$middle = strtotime($old_date); // returns bool(false)
$new_date = date('Y-m-d H:i:s', $middle); // returns 1970-01-01 00:00:00
Maar ik wil natuurlijk dat het een huidige datum teruggeeft in plaats van de dageraad. Wat doe ik verkeerd?
De tweede parameter voor datum()
moet een correcte tijdstempel zijn (seconden sinds 1 januari 1970). Je geeft een string door, die date() niet kan herkennen.
Je kunt strtotime() gebruiken om een datum string om te zetten in een timestamp. Echter, zelfs strtotime() herkent het j-m-d-h-i-s
formaat niet.
PHP 5.3 en hoger
Gebruik DateTime::createFromFormat
. Hiermee kunt u een exact masker opgeven - gebruik makend van de date()
syntax - om binnenkomende string datums mee te parsen.
PHP 5.2 en lager
Je zult de elementen (jaar, maand, dag, uur, minuut, seconde) handmatig moeten parsen met substr()
en de resultaten moeten overdragen aan mktime() die een timestamp voor je zal maken.
Maar dat's veel werk! Ik raad aan om een ander formaat te gebruiken dat strftime() kan begrijpen. strftime() begrijpt elke datuminvoer behalve de volgende keer dat joe zal uitglijden op het ijs
. bijvoorbeeld, dit werkt:
$old_date = date('l, F d y h:i:s'); // returns Saturday, January 30 10 02:06:34
$old_date_timestamp = strtotime($old_date);
$new_date = date('Y-m-d H:i:s', $old_date_timestamp);
Je moet de $old_date terug omzetten in een timestamp, aangezien de date function een timestamp nodig heeft als tweede argument.