it-swarm.com.de

PHP Datum, das nach der Konvertierung '1970-01-01' zeigt

Ich habe ein Formular, in dem das Datumsformat dd/mm/yyyy ist. Für das Durchsuchen der Datenbank habe ich das Datumsformat in yyyy-mm-dd umgewandelt. Aber wenn ich echo, zeigt es 1970-01-01. Der PHP Code ist unten:

$date1 = $_REQUEST['date'];     
echo date('Y-m-d', strtotime($date1));

Warum passiert das? Wie kann ich es in yyyy-mm-dd formatieren?

21
AssamGuy

Ersetzen Sie / durch -:

$date1 = strtr($_REQUEST['date'], '/', '-');
echo date('Y-m-d', strtotime($date1));
57
Cyclonecode

Der 1. Januar 1970 ist die sogenannte Unix-Epoche. Es ist der Tag, an dem die Unix-Zeit gezählt wurde. Wenn Sie dieses Datum als Rückgabewert erhalten, bedeutet dies normalerweise, dass die Konvertierung Ihres Datums in den Unix-Zeitstempel ein Ergebnis (nahe) von Null ergibt. Die Datumskonvertierung schlägt also fehl. Wahrscheinlich, weil es eine falsche Eingabe erhält.

Mit anderen Worten, Ihre strtotime($date1) gibt 0 zurück, was bedeutet, dass $date1 in einem nicht unterstützten Format für die Funktion strtotime übergeben wird.

30
Oldskool
$inputDate = '07/05/-0001';
$dateStrVal = strtotime($inputDate);
if(empty($dateStrVal))
{
  echo 'Given date is wrong'; 
}
else{
 echo 'Date is correct';
}

O/P: Angegebenes Datum ist falsch 

1
Kaushal Roy

Verwenden Sie den folgenden Code für PHP 5.3+:

$date = new DateTime('1900-02-15');
echo $date->format('Y-m-d');

Verwenden Sie den folgenden Code für PHP 5.2:

$date = new DateTime('1900-02-15');
echo $date->format('Y-m-d');
0
Dayz

Eine andere Problemumgehung:

Datepicker dd/mm/yyyy in yyyy-mm-dd konvertieren

$startDate = trim($_POST['startDate']);
$startDateArray = explode('/',$startDate);
$mysqlStartDate = $startDateArray[2]."-".$startDateArray[1]."-".$startDateArray[0];
$startDate = $mysqlStartDate;
0
$date1 = $_REQUEST['date'];

if($date1) {
    $date1 = date( 'Y-m-d', strtotime($date1));
} else {
    $date1 = '';
}

Dies wird korrekt angezeigt, wenn in $date eine gültige date() vorhanden ist. Falls nicht, wird nichts angezeigt.
Das Problem für mich gelöst.

0
Tye Lucas