Obtenir l'heure "absolue" [JS]

Mysterious_fea Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   -  
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Membre Dernière intervention   35
 
Up please !!
0
Mysterious_fea Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   35
 
SVP!
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
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   Statut Membre Dernière intervention   35
 
Tu aurais une idée de code, enfin dans les grandes lignes, STP ?
Merci
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922 > Mysterious_fea Messages postés 401 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   35 > Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention  
 
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   Statut Contributeur Dernière intervention   922
 
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   Statut Membre Dernière intervention   35
 
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   Statut Membre Dernière intervention   35
 
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   Statut Contributeur Dernière intervention   922
 
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   Statut Membre Dernière intervention   35
 
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   Statut Contributeur Dernière intervention   922 > Mysterious_fea Messages postés 401 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   922
 
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