OVH Cloud OVH Cloud

probleme de date mktime

4 réponses
Avatar
Michel Jeandon
dans une base de donnée un programme java ecrit des dates avec un entier
long getTimeInMillis,
qui est la meme date que renvoi la fonction new Date() en javascript.

En php, avec mktime ou gmmktime, meme en multipliant par 1000
(miillisecondes) je n'obtient pas la meme valeur (j'ai testé le
javascrit sur le serveur, pour etre sure d'etre à la meme heure).

j' obtiens 1158575216000 en javascript
et 1158488815 en php

J'ai essayé en changeant l'argument is_dst de mktime, mais rien y fait,
j'ai toujours un decallage.

Depuis 1970, le temps ne serait il pas le meme en java et en php?

Merci, si vous avez une idée.

4 réponses

Avatar
Olivier Miakinen

dans une base de donnée un programme java ecrit des dates avec un entier
long getTimeInMillis,
qui est la meme date que renvoi la fonction new Date() en javascript.

En php, avec mktime ou gmmktime, meme en multipliant par 1000
(miillisecondes) je n'obtient pas la meme valeur (j'ai testé le
javascrit sur le serveur, pour etre sure d'etre à la meme heure).

j' obtiens 1158575216000 en javascript
et 1158488815 en php


Aux trois zéros près, j'espère que tu as vu que c'était assez proche
quand même. Les fonctions de PHP, comme celles équivalentes en C,
retournent une valeur en secondes et pas en millisecondes.

1158575216 - 1158488815 = 86401 = 24×60×60 + 1

Il y a donc (à une seconde près, qui n'est sans doute pas
significative), un jour de différence entre ces deux dates.

Quant au fait de multiplier par 1000 la valeur retournée par PHP, je
suppose que tu as remarqué que cela ne donnait pas 1158488815000 mais
3142612376, ce qui as dû te faire penser que les entiers sont sur 32 bits...

J'ai essayé en changeant l'argument is_dst de mktime, mais rien y fait,
j'ai toujours un decallage.

Depuis 1970, le temps ne serait il pas le meme en java et en php?

Merci, si vous avez une idée.


Pour ce qui est du jour de décalage, non, je n'ai pas d'idée. J'aurais
compris s'il s'était agi de deux heures (différence entre l'heure locale
en France en été et l'heure universelle), mais pas pour 24 heures.

Avatar
CrazyCat
dans une base de donnée un programme java ecrit des dates avec un entier
long getTimeInMillis,
qui est la meme date que renvoi la fonction new Date() en javascript.

En php, avec mktime ou gmmktime, meme en multipliant par 1000
(miillisecondes) je n'obtient pas la meme valeur (j'ai testé le
javascrit sur le serveur, pour etre sure d'etre à la meme heure).

j' obtiens 1158575216000 en javascript
et 1158488815 en php


Comment testes-tu en javascript sur le serveur?
- Javascript prend la date sur le client, PHP prend la date sur le serveur
- Javascript démarre quand la page est chargée, PHP démarre quand la
page est appelée.

Pour ma part, avec 2 systèmes à la même heure (le serveur et le client),
j'obtiens en PHP et en JS des valeurs similaires.


--
Astuces pour webmasters: http://www.crazycat.info
Tchat francophone: http://www.crazy-irc.net

Avatar
Olivier Miakinen

- Javascript prend la date sur le client, PHP prend la date sur le serveur


Tiens, oui, je n'y avais pas pensé. Il est possible qu'il y ait un jour
de décalage entre le client et le serveur, non ?

Avatar
Michel Jeandon
dans une base de donnée un programme java ecrit des dates avec un entier
long getTimeInMillis,
qui est la meme date que renvoi la fonction new Date() en javascript.

En php, avec mktime ou gmmktime, meme en multipliant par 1000
(miillisecondes) je n'obtient pas la meme valeur (j'ai testé le
javascrit sur le serveur, pour etre sure d'etre à la meme heure).

j' obtiens 1158575216000 en javascript
et 1158488815 en php


Comment testes-tu en javascript sur le serveur?
- Javascript prend la date sur le client, PHP prend la date sur le serveur
- Javascript démarre quand la page est chargée, PHP démarre quand la
page est appelée.

Pour ma part, avec 2 systèmes à la même heure (le serveur et le client),
j'obtiens en PHP et en JS des valeurs similaires.


Et oui, j'avais fait une erreur: je retirais un wday au mday et du coup

je renvoyais la date du lundi.

Pour tester sur le serveur, j'ouvre physiquement un navigateur sur le
serveur avec une url en localhost, avec lynx ou links si je suis en mode
texte.

Merci de votre aide.