J'ai été en utilisant PHP strtotime
et MySQL UNIX_TIMESTAMP
fonctions dans mon application, de convertir des dates dans les horodateurs. PHP et MySQL sont en cours d'exécution sur ma machine locale, et ces fonctions retournent généralement le même résultat, comme je l'avais prévu:
$ php
<?php echo strtotime("2011-06-02"); ?>
1307001600
mysql> SELECT UNIX_TIMESTAMP("2011-06-02") ts;
+------------+
| ts |
+------------+
| 1307001600 |
+------------+
Mais, sorta par hasard, j'ai remarqué que lorsque je suis entré 1983-01-01
comme la date, les résultats étaient plus égaux:
$ php
<?php echo strtotime("1983-01-01"); ?>
410263200
mysql> SELECT UNIX_TIMESTAMP("1983-01-01") ts;
+-----------+
| ts |
+-----------+
| 410256000 |
+-----------+
Comme vous pouvez le voir, PHP retourné 410263200, alors que MySQL a retourné 410256000 - une différence de 7200 secondes.
Cela m'a fait curieux, et je voulais savoir à quelle date les horodateurs n'ont plus d'équivalent, j'ai donc écrit un petit programme qui démarre aujourd'hui avec la date (Y-m-d le format), utilise PHP strtotime
et MySQL UNIX_TIMESTAMP
et compare les résultats. Il soustrait ensuite le 1er jour de chaque valeur et les boucles jusqu'à ce qu'ils ne sont plus égaux.
Le résultat:
1983-10-29
Sur octobre 29, 1983, pour une raison quelconque, strtotime
et UNIX_TIMESTAMP
retour des valeurs qui diffèrent par 7200 secondes.
Des idées?
Merci pour la lecture.