Obtenir l'heure "absolue" [JS]

Fermé
Mysterious_fea Messages postés 401 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 23 mars 2013 - 2 avril 2008 à 19:02
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 19 avril 2008 à 22:40
Bonjour,
Je souhaiterai savoir s'il est possible d'obtenir par Javascript l'heure absolue en France (GMT + 2), et pas l'heure de l'horloge Windows du visiteur.
Merci

7 réponses

Mysterious_fea Messages postés 401 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 23 mars 2013 35
7 avril 2008 à 19:29
Up please !!
0
Mysterious_fea Messages postés 401 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 23 mars 2013 35
16 avril 2008 à 19:39
SVP!
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
16 avril 2008 à 19:42
salut,

dans ce cas, il faut demander l'info à un serveur donc passer par XMLHTTPRequest (Ajax).
et répondre avec un script PHP.
0
Mysterious_fea Messages postés 401 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 23 mars 2013 35
16 avril 2008 à 23:06
Tu aurais une idée de code, enfin dans les grandes lignes, STP ?
Merci
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920 > Mysterious_fea Messages postés 401 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 23 mars 2013
16 avril 2008 à 23:15
regarde , y en a pour tous les niveaux.

après je ne sais pas si il vaut mieux interroger directement un serveur qui donne l'heure (comme ceux qui permettent de synchroniser les PC, ça doit bien exister mais je n'en connais pas) ou si tu interroges direct le serveur qui héberge ton site avec PHP.

je suppose que la seconde méthode est beaucoup plus facile.
0
Mysterious_fea Messages postés 401 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 23 mars 2013 35 > Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
17 avril 2008 à 22:26
Je n'ai pas trouvé mon bonheur dans ces tutos, car cela parle surtout du XML.
Pour ce qui est du PHP, je vais utiliser :
<?php
$heure = date("H");
$min = date("i");
echo $heure.'h'.$min;
?>

Je souhaiterais donc appeler ce fichier PHP avec du XMLHTTPRequest... Comment le faire ?
Merci
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
18 avril 2008 à 20:40
salut,

car cela parle surtout du XML
et alors ?! XHTML est du XML…
et de toute façon, 'httpRequest.responseText' contient la réponse du serveur au format texte, tu peux en faire ce que tu veux.

admettons que tu nommes ton script 'request.php'
il faut lui ajouter l'envoi du 'Content Type' en premier :
header('Content-Type: text/html; charset=ISO-8859-1');


en JS tu dois avoir un code du style :
function getXHR()
{
	var xhr=null;
	if( window.XMLHttpRequest )
	{
		xhr = new XMLHttpRequest();
	}
	else if( window.ActiveXObject )
	{
		try
		{
			xhr = new ActiveXObject( "Msxml2.XMLHTTP" );
		}
		catch( e )
		{
			try
			{
				xhr = new ActiveXObject( "Microsoft.XMLHTTP" );
			}
			catch( e1 )
			{
				xhr = null;
			}
		}
	}
	else
	{
		alert( "Votre navigateur ne supporte pas les objets XMLHTTPRequest." );
	}
	return xhr;
}
function updateTime( httpRequest ) 
{
    if ( httpRequest.readyState == 4 )
    {
        if ( httpRequest.status == 200 )
        {
            document.getElementById( "container" ).innerHTML = httpRequest.responseText;
        }
        else
        {
            document.getElementById( "container" ).innerHTML = 'Un probl&egrave;me est survenu avec la requ&ecirc;te.';
        }
    }
}
function displayTime()
{
	xhr = getXHR();
	if( xhr )
	{
		xhr.open( 'GET', 'http://www.tonsite/request.php', true );
		xhr.onreadystatechange = function() { updateTime( xhr ); };
		xhr.send( '' )
	}
}

il te reste juste à appeler la fonction JS depuis ton document HTML et d'y mettre un containeur :
<body onload="displayTime();">
	<p id="container"></p>
</body>
0
Mysterious_fea Messages postés 401 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 23 mars 2013 35
18 avril 2008 à 23:39
Merci beaucoup, je vais essayer ça !
A + !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mysterious_fea Messages postés 401 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 23 mars 2013 35
19 avril 2008 à 19:51
Bon il intègre bien le php mais il merde avec le header, il me dit
Cannot modify header information - headers already sent by
. Donc quand j'enlève le header ça me l'inclue mais ça se met pas à jour en temps réel, il faut rafraîchir. Voilà mes codes :
heure.php
<?php
header('Content-Type: text/html; charset=ISO-8859-1');
$heure = date("H");
$min = date("i");
echo $heure.'h'.$min;
?>

heure.js
function getXHR()
{
	var xhr=null;
	if( window.XMLHttpRequest )
	{
		xhr = new XMLHttpRequest();
	}
	else if( window.ActiveXObject )
	{
		try
		{
			xhr = new ActiveXObject( "Msxml2.XMLHTTP" );
		}
		catch( e )
		{
			try
			{
				xhr = new ActiveXObject( "Microsoft.XMLHTTP" );
			}
			catch( e1 )
			{
				xhr = null;
			}
		}
	}
	else
	{
		alert( "Votre navigateur ne supporte pas les objets XMLHTTPRequest." );
	}
	return xhr;
}
function updateTime( httpRequest ) 
{
    if ( httpRequest.readyState == 4 )
    {
        if ( httpRequest.status == 200 )
        {
            document.getElementById( "heure" ).innerHTML = httpRequest.responseText;
        }
        else
        {
            document.getElementById( "heure" ).innerHTML = 'Un probl&egrave;me est survenu avec la requ&ecirc;te.';
        }
    }
}
function displayTime()
{
	xhr = getXHR();
	if( xhr )
	{
		xhr.open( 'GET', 'http://www.eficoach.com/essai/heure.php', true );
		xhr.onreadystatechange = function() { updateTime( xhr ); };
		xhr.send( '' )
	}
}

index.php
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<title>Exemple 1</title>
<script type="text/javascript" src="heure.js"></script>
</head>
<body onload="displayTime();">
	<p id="heure"></p>

</body>
</html>

Merci
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
19 avril 2008 à 20:16
salut,

ça se met pas à jour en temps réel, il faut rafraîchir
du coup ça perd tout son intérêt !!!

mais tu veux simplement afficher l'heure une fois ou l'actualiser en temps réel ?
comme tu parlais de JS au départ je pensais que tu voulais faire une horloge sur ta page avec l'heure serveur.
si tu veux juste horodater la page, pas besoin d'Ajax.

sinon, le 'header' doit être envoyé avant quoi que ce soit d'autre, il ne doit même pas y avoir un espace avant l'ouverture de la balise PHP.
0
Mysterious_fea Messages postés 401 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 23 mars 2013 35
19 avril 2008 à 22:28
Non non en effet je souhaiterais une mise à jour en temps réel, sinon j'aurais simplement fait appel au PHP.
J'ai enlevé l'espace et plus d'erreur PHP mais toujours pas de mise à jour en temps réel. Je ne vois pas où tu as réglé le temps entre 2 rafraichissement sur le js...
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920 > Mysterious_fea Messages postés 401 Date d'inscription vendredi 29 juin 2007 Statut Membre Dernière intervention 23 mars 2013
19 avril 2008 à 22:36
ah !!!
bon on est bien d'accord !!!

mais je n'avais pas mis de temps de rafraichissement auto mais seulement le premier appel !
je pensais que ça tu l'avais déjà !

suffit de l'ajouter à la fonction JS, pour qu'elle se rappelle elle-même.
tu lances une première fois dans le 'onload' et après elle débrouille.

je regarde pour le code et te tiens au jus !
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
19 avril 2008 à 22:40
mais j'ai peur que les envois se chevauchent en cas de latence avec la réponse.
function displayTime()
{
	xhr = getXHR();
	if( xhr )
	{
		xhr.open( 'GET', 'http://www.eficoach.com/essai/heure.php', true );
		xhr.onreadystatechange = function() { updateTime( xhr ); };
		xhr.send( '' )
		setTimeout(displayTime(),1000);
	}
}
0