364 votes

Comment convertir la date en timestamp en PHP?

Comment puis-je obtenir l'horodatage par exemple 22-09-2008 ?

628voto

Owen Points 36009

PHP strtotime() donne

 $timestamp = strtotime('22-09-2008');
 

Ce qui fonctionne bien avec la date et les formats pris en charge Temps Docs .

186voto

Armin Ronacher Points 16894

Il y a aussi strptime() qui attend exactement un format:

 $a = strptime('22-09-2008', '%d-%m-%Y');
$timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900);
 

130voto

Gordon Points 156415

Avec DateTime API:

$dateTime = new DateTime('2008-09-22'); 
echo $dateTime->format('U'); 

// or 

$date = new DateTime('2008-09-22');
echo $date->getTimestamp();

De même avec la procédure de l'API:

$date = date_create('2008-09-22');
echo date_format($date, 'U');

// or

$date = date_create('2008-09-22');
echo date_timestamp_get($date);

Si le ci-dessus échoue parce que vous utilisez un format non pris en charge, vous pouvez utiliser

$date = DateTime::createFromFormat('!d-m-Y', '22-09-2008');
echo $dateTime->format('U'); 

// or

$date = date_parse_from_format('!d-m-Y', '22-09-2008');
echo date_format($date, 'U');

Notez que si vous ne définissez pas l' !, le temps de la partie sera défini à l'heure actuelle, ce qui est différent de la première des quatre qui va l'utiliser à minuit, lorsque vous omettez le temps.

Encore une autre alternative est d'utiliser l' IntlDateFormatter API:

$formatter = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'GMT',
    IntlDateFormatter::GREGORIAN,
    'dd-MM-yyyy'
);
echo $formatter->parse('22-09-2008');

Sauf si vous travaillez avec des chaînes date, le choix le plus facile est probablement le type DateTime.

115voto

daremon Points 3171

Soyez prudent avec des fonctions comme strtotime() que d'essayer de "deviner" ce que tu veux dire (il n'a pas le deviner, bien sûr, les règles sont ici).

En effet, 22-09-2008 sera analysée comme 22 septembre 2008, c'est la seule chose raisonnable.

Comment vais - 08-09-2008 être analysé? Probablement 09 Août 2008.

Qu'en 2008-09-50? Certaines versions de PHP analyser ce que le 20 octobre 2008.

Donc, si vous êtes sûr que votre entrée est à l' DD-MM-YYYY format, il est préférable d'utiliser la solution proposée par @Armin Ronacher.

44voto

Till Points 14673

Utilisation de mktime:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X