Page 1 sur 1
Convertir seconde en H:Min:Sec
Posté : 27 avr. 2010, 17:24
par hashut
Bonjour
tous est dans le sujet
comment convertir se compte a rebours qui affiche que les seconde en H:min:sec
merci
Code : Tout sélectionner
<?php
$datas= "Apr 30 16:00:00 2010" ;
?>
<script type="text/javascript">
function rebours(id) {
var el = document.getElementById(id),
datedujour = <?php echo time(); ?>;
var date_even = new Date("<?php echo ($datas); ?>");
setInterval(function() {
datedujour++;
el.innerHTML = 'Il reste ' + (date_even.getTime() / 1000 - datedujour) + ' secondes';
}, 1000);
}
window.onload=function(){
rebours('id_du_div');
};
</script>
<div id="id_du_div"></div>
</body>
Re: Convertir seconde en H:Min:Sec
Posté : 27 avr. 2010, 18:43
par jojolapine
Et bien il s'agit simplement de maths
Combien y a-t-il de secondes dans une minute? dans une heure?
Tu peux commencer par convertir tes secondes en heure, il y aura un reste à la division (ou pas si on est à l'heure pile

), tu convertis ce reste en minute, et le reste de ton opération te donnera les secondes restantes

Re: Convertir seconde en H:Min:Sec
Posté : 27 avr. 2010, 19:39
par hashut
je sais mais je n'arrive pas un petit indice
svp
Re: Convertir seconde en H:Min:Sec
Posté : 27 avr. 2010, 20:30
par Nours312
var secondes = date_even.getTime() / 1000 ;
var days = Math.floor(secondes / 86400);
secondes = secondes - (days*86400);
var hour = Math.floor(secondes / 3600);
secondes = secondes - (hour*3600);
...
...
@++
Re: Convertir seconde en H:Min:Sec
Posté : 28 avr. 2010, 08:21
par hashut
Merci pour l'indice je fait teste sa se matin
merci merci
Re: Convertir seconde en H:Min:Sec
Posté : 28 avr. 2010, 17:01
par hashut
cela fait 6h que je me bat je n'arrive pas
bordel je suis vraiment nul en java
Help svp
Re: Convertir seconde en H:Min:Sec
Posté : 29 avr. 2010, 18:49
par hashut
voila trouver mais plus dynamique donc je fait cree un autre sujet
Code : Tout sélectionner
<?php
$db = mysql_connect('localhost','root','root');
mysql_select_db('test' ,$db);
$req_att = "SELECT heure_fin FROM date " ;
$req = mysql_query($req_att) OR die('erreur dans la requete pour savoir l\'attaque continu');
while($data = mysql_fetch_array($req))
{
$hf= $data['heure_fin'];
}
$mois="Apr";
$jour="30";
$annee="2010";
$datas= "$mois $jour $hf $annee" ;
echo"$datas";
?>
<script type="text/javascript">
function rebours(id) {
var el = document.getElementById(id),
datedujour = <?php echo time(); ?>;
var date_even = new Date("<?php echo ($datas); ?>");
var sec=(date_even.getTime() / 1000 - datedujour);
var n = 24 * 3600;
j = Math.floor (sec / n);
h = Math.floor ((sec - (j * n)) / 3600);
mn = Math.floor ((sec - ((j * n + h * 3600))) / 60);
sec = Math.floor (sec - ((j * n + h * 3600 + mn * 60)));
if (sec > 0) {
setInterval(function() {
datedujour++;
el.innerHTML = 'Il reste ' + j +'j'+ h +'h'+ mn +'m'+ sec +'s';
}, 1000);
}else{
el.innerHTML = "Temps Terminés";
}
}
window.onload=function(){
rebours('id_du_div');
};
</script>
<div id="id_du_div"></div>
</body>
Re: Convertir seconde en H:Min:Sec
Posté : 29 avr. 2010, 19:44
par AB
C'est pas la bonne méthode, déjà parce que quand tu fais un setInterval ... 1000 ça ne donnera pas une seconde avant de déclencher la fonction mais un temps d' à peu près une seconde et cela peut varier beaucoup entre les différents navigateurs.
Récapitulons : Tu as une date de fin générée en php et un compte à rebour à faire en javascript.
1-verif / Déjà pour que cela fonctionne il faudrait s'assurer que la date-heure
actuelle générée par le serveur soit à peu de chose près la même que celle trouvée sur le navigateur en javascript.
Si oui tu met la date de fin générée en php dans une variable javascript si elle n'est pas déjà été crée en début de script
Code : Tout sélectionner
if (typeof fin == 'undefined') var fin = '<?php echo $date_fin?>';
ensuite c'est cette variable javascript "fin" que tu passeras en paramètre dans ta fonction rebour pour pouvoir la récupérer en js dans ta boucle.
Elle doit donc être indiquée à la fois dans ta fonction rebour
et comme paramètre dans setInterval
Et donc il te reste à faire la soustraction des deux dates : date-originelle php enregistrée dans la vrariable js 'fin' - date instantanée trouvée en javascript et de convertir le tout en secondes.
Si 1-verif/ n'est pas bon tu n'affiche pas de compte à rebour mais simplement un message indiquant la date de fin.
Re: Convertir seconde en H:Min:Sec
Posté : 30 avr. 2010, 15:04
par hashut
ou j'ai pas compris ou sa marche pas toujours compte rebour pas dynamique
Re: Convertir seconde en H:Min:Sec
Posté : 30 avr. 2010, 15:12
par macgawel
Bonjour.
Question stupide : tu as de quoi déboguer le JS ? (au minimum, sous FF tu dois installer l'extension Web Developper et/ou Firebug)
Re: Convertir seconde en H:Min:Sec
Posté : 30 avr. 2010, 15:23
par hashut
je suis sous mac ??
Re: Convertir seconde en H:Min:Sec
Posté : 30 avr. 2010, 15:41
par hashut
je comprend pas pk quand je sur en millisecondes sa marche nickel
et quand je formate en heure minutes secondes sa marche plus
je devins fou
Re: Convertir seconde en H:Min:Sec
Posté : 11 mai 2010, 17:35
par hashut
voici le code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
include('../conf/conf.php');
$db = mysql_connect($serveur, $user, $passw);
mysql_select_db($bd_base ,$db);
$id=1;
/////////////////////////////////////////////
$req_att = "SELECT h_fin, DAY(h_fin) AS jour, MONTH(h_fin) AS mois, YEAR(h_fin) AS annee, HOUR(h_fin) AS heure, MINUTE(h_fin) AS minute, SECOND(h_fin) AS seconde FROM Objet where id =$id" ;
$req = mysql_query($req_att) OR die('erreur dans la requete pour savoir l\'attaque continu');
while($data = mysql_fetch_array($req))
{
$jour= $data['jour'];
$mois= $data['mois'];
$heure= $data['heure'];
$minute= $data['minute'];
$seconde= $data['seconde'];
$annee= $data['annee'];
}
$targetYear = $annee ;
$targetMonth = $mois ;
$targetDay = $jour ;
$targetHour = $heure ;
$targetMinute = $minute ;
$targetSecond = $seconde ;
$dateFormat = "Y-m-d H:i:s";
$targetDate = mktime($targetHour,$targetMinute,$targetSecond,$targetMonth,$targetDay,$targetYear);
$actualDate = time();
$secondsDiff = $targetDate - $actualDate;
$remainingDay = floor($secondsDiff/60/60/24);
$remainingHour = floor(($secondsDiff-($remainingDay*60*60*24))/60/60);
$remainingMinutes = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))/60);
$remainingSeconds = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))-($remainingMinutes*60));
$targetDateDisplay = date($dateFormat,$targetDate);
$actualDateDisplay = date($dateFormat,$actualDate);
?>
<script type="text/javascript">
var days = <?php echo $remainingDay; ?>
var hours = <?php echo $remainingHour; ?>
var minutes = <?php echo $remainingMinutes; ?>
var seconds = <?php echo $remainingSeconds; ?>
function setCountDown ()
{
seconds--;
if (seconds < 0){
minutes--;
seconds = 59
}
if (minutes < 0){
hours--;
minutes = 59
}
if (hours < 0){
days--;
hours = 23
}
/////////////////////////////
if( days < 0 ){
document.getElementById("<?php echo $id ?>").innerHTML =" Terminés";
}
else
{
/////////////////////////////
document.getElementById("<?php echo $id ?>").innerHTML = days+":"+hours+":"+minutes+":"+seconds;
/////////////////////////////////////////////////////////
}
/////////////////////////////////////////
setTimeout ( "setCountDown()", 1000 );
/////////////////////////////
//////////////////
}
</script>
</head>
<body onload="setCountDown();">
<div id=<?php echo $id ?>><?php echo "$remainingDay days, $remainingHour hours, $remainingMinutes minutes, $remainingSeconds seconds";?></div>
<?php
/////////////////////////////
?>