web-dev-qa-db-fra.com

PHP date indiquant '1970-01-01' après conversion

J'ai un formulaire dans lequel le format de date est dd/mm/yyyy. Pour la recherche dans la base de données, j'ai modifié le format de date en yyyy-mm-dd. Mais quand je echo il, il affiche 1970-01-01. Le code PHP est ci-dessous:

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

Pourquoi ça se passe? Comment puis-je le formater en yyyy-mm-dd?

21
AssamGuy

Remplacez / par -:

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

Le 1 er janvier 1970 est l’époque dite Unix. C'est la date à laquelle ils ont commencé à compter le temps Unix . Si vous obtenez cette date comme valeur de retour, cela signifie généralement que la conversion de votre date en horodatage Unix a donné un résultat (presque) égal à zéro. Donc, la conversion de date ne réussit pas. Très probablement parce qu'il reçoit une mauvaise entrée.

En d'autres termes, votre strtotime($date1) renvoie 0, ce qui signifie que $date1 est transmis dans un format non pris en charge pour la fonction strtotime.

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

O/P: La date donnée est fausse 

1
Kaushal Roy

Utilisez le code ci-dessous pour php 5.3+:

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

Utilisez le code ci-dessous pour php 5.2:

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

Une autre solution de contournement:

Convertir datepicker dd/mm/yyyy en yyyy-mm-dd

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

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

Ceci s'affichera correctement s'il y a une date() valide dans $date et rien sinon.
Résolu le problème pour moi.

0
Tye Lucas