web-dev-qa-db-fra.com

Comment obtenir la date / heure actuelle en tant qu'objet date dans PHP

Comment obtenez-vous la date d'aujourd'hui, en tant qu'objet de date?

J'essaie de calculer la différence entre une date de début et aujourd'hui. Ce qui suit ne fonctionnera pas, car getdate() renvoie un tableau et non un objet date:

$today = getdate();           
$start = date_create('06/20/2012');
$diff = date_diff($start, $today);

echo($today . '<br/>' . $start . '<br/>' . $diff);

Production:

Tableau ([secondes] => 8 [minutes] => 1 [heures] => 16 [mday] => 11 [wday] => 1 [lun] => 6 [year] => 2012 [yday] => 162 [jour de semaine] => lundi [mois] => juin [0] => 1339455668)

Objet DateTime ([date] => 2012-06-20 00:00:00 [timezone_type] => 3 [timezone] => America/Los_Angeles)

19
McGarnagle
new DateTime('now');

http://www.php.net/manual/en/datetime.construct.php

La comparaison est facile:

$today = new DateTime('now');
$newYear = new DateTime('2012-01-01');

if ($today > $newYear) {

}

Édition d'Op Je devais juste appeler date_default_timezone_set, puis ce code a fonctionné pour moi.

40
Mike B

Pour obtenir une différence en jours, utilisez ceci:

$today = new DateTime('today');

l'heure dans cet objet sera 00:00:00

Si vous voulez une différence avec les heures, les minutes et les secondes, utilisez ceci:

$now = new DateTime('now');
13
Skipper

J'ai fini par utiliser le date_create constructeur (aucun paramètre) pour obtenir la date actuelle.

$diff = date_diff(date_create('06/20/2012'), date_create());
print_r($diff);

Sortie:

Objet DateInterval ([y] => 0 [m] => 0 [d] => 8 [h] => 6 [i] => 30 [s] => 40 [inverser] => 1 [jours] => 8)

Je n'ai aucune idée pourquoi, mais la réponse de Mike B (et tout constructeur que j'ai essayé pour DateTime ) m'a jeté une erreur en PHP5/IIS.

0
McGarnagle