web-dev-qa-db-fra.com

Convertir TIMESTAMP en unix en PHP?

Actuellement, je stocke l'heure dans ma base de données comme suit: 2010-05-17 19:13:37

Cependant, je dois comparer deux fois, et je pense que ce serait plus facile à faire s'il s'agissait d'un horodatage Unix tel que 1274119041. (Ces deux temps sont différents)

Alors, comment pourrais-je convertir l'horodatage en horodatage Unix? Existe-t-il une fonction php simple pour cela?

26
Rob

Vous recherchez strtotime ()

36
Mark

Vous voulez strtotime :

print strtotime('2010-05-17 19:13:37'); // => 1274123617
13
Matt

Obtenir un horodatage unix:

$unixTimestamp = time();

Conversion au format mysql datetime:

$mysqlTimestamp = date("Y-m-d H:i:s", $unixTimestamp);

Obtenir un horodatage mysql:

$mysqlTimestamp = '2013-01-10 12:13:37';

Le convertir en unixtimestamp:

$unixTimestamp = strtotime('2010-05-17 19:13:37');

... en le comparant à une ou plusieurs plages de temps, pour voir si l'utilisateur a entré une heure réaliste:

if($unixTimestamp > strtotime("1999-12-15") && $unixTimestamp < strtotime("2025-12-15"))
{...}

Les horodatages Unix sont également plus sûrs. Vous pouvez effectuer les opérations suivantes pour vérifier si une variable passée par URL est valide, avant de vérifier (par exemple) la vérification de plage précédente:

if(ctype_digit($_GET["UpdateTimestamp"]))
{...}
6
Florian Mertens

Si vous utilisez MySQL comme base de données, il peut renvoyer les champs de date sous forme d'horodatages Unix avec NIX_TIMESTAMP :

SELECT UNIX_TIMESTAMP(my_datetime_field)

Vous pouvez également le faire du côté PHP avec strtotime :

strtotime('2010-05-17 19:13:37');
4
webbiedave

si vous stockez l'heure dans la base de données, pourquoi ne pas laisser la base de données vous donner également l'horodatage unix de celle-ci? voir UNIX_TIMESTAMP(date) , par exemple.

SELECT UNIX_TIMESTAMP(date) ...;

les bases de données peuvent également faire des comparaisons de date et d'heure et de l'arithmétique.

3
ax.