---
title: "Få ett skript att även räkna med sekunder"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/176147-få-ett-skript-att-även-räkna-med-sekunder"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "solbulle"
published: "2009-01-01T23:50:08.000Z"
updated: "2009-01-03T03:13:10.000Z"
replies: 2
views: 341
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/176147-få-ett-skript-att-även-räkna-med-sekunder"
---

# Få ett skript att även räkna med sekunder

## #1 — solbulle, 2009-01-01T23:50Z

Jag har ett skript som räknar ut en tid det tar mellan två punkter.
Jag skulle vilja komplettera det så att man kan ange sekunder, men får inte till det.
Här i funktionen getRelativeDate används 0 som invärde på sekunder, men jag vill använda mig av ett värde inplitat i en div som alla andra värden.

Invärdena hämtas i denna rad:

  			rt = getRelativeDate({day:$F('time-d'),hour:$F('time-h'),minute:$F('time-m')},deltaTime);

Där vill jag mao att även sekunderna plockas med:

typ:  second:$F('time-s')}

Men jag får inte till det. 
Jag har full respekt för att det säkerligen är svårt att komma med lösningar när man kanske inte ser hela bilden framför sig, jag postar så mycket kod jag kan som jag tror är relevant.
(Vidare tycker jag att hela funktioen räknar fel på en dag, men det gick ju lätt att fixa med fulknep.)

Jag har följande funktioner:

```
function beautifyTime(t){
	t = Math.round(t);
	r = {day:0,hour:0,minute:0,second:0};
	r.second = t % 60;
	t = (t - r.second) / 60;
	t.second = (t.second<10)?"0"+t.second:t.second;
	r.minute = t % 60;
	t = (t - r.minute) / 60;
	t.minute = (t.minute<10)?"0"+t.minute:t.minute;
	r.hour = t % 24;
	t = (t - r.hour) / 24;
	r.day = t;
	return r;
}

function getRelativeDate(rel,t){
//	console.log(rel.day + " " + rel.hour + " " + rel.minute);
	d = new Date();
	d.setDate(d.getDate() + rel.day);
	d.setMinutes(rel.minute);
	d.setHours(rel.hour);
	d.setSeconds(0);
	secs = Math.round(d.getTime());
	secs = secs - t*1000;
	d.setTime(secs);
	// We surely want to round by excess!
	rd = rel.day-Math.round(t/86400000 + 0.5);
//	console.log("Hour:" + d.getHours() + " Minute:" + d.getMinutes() + " Seconds:" + d.getSeconds());
	return {day:rd,dayname:daynames[rd],hour:d.getHours(),minute:d.getMinutes(),second:d.getSeconds()};
}

  		function update(n){
  			attacker = getAttacker(n);
  			target = getDefender();
  			if(!attacker.x || !attacker.y || !target.x || !target.y){
	  			Element.hide('result-'+n);
  				return;
  			}

  			speed = $F('slowTroup-'+n);
  			distance = getDistance(attacker,target);
  			deltaTime = getTravelTime(distance,speed);
  			//console.log("Speed: " + speed + " Distance:" + distance + " Delta Time:" + deltaTime);
  			tt = beautifyTime(deltaTime);
  			$('result-'+n+'-d').innerHTML = tt.day;$('result-'+n+'-h').innerHTML = tt.hour;
  			$('result-'+n+'-m').innerHTML = tt.minute;$('result-'+n+'-s').innerHTML = tt.second;
  			
  			rt = getRelativeDate({day:$F('time-d'),hour:$F('time-h'),minute:$F('time-m')},deltaTime);
  			$('result3-'+n+'-d').innerHTML = rt.dayname;
			$('result3-'+n+'-h').innerHTML = rt.hour;
			$('result3-'+n+'-m').innerHTML = rt.minute;
			$('result3-'+n+'-s').innerHTML = rt.second;
  			new Effect.Appear('result-'+n, { duration: 3.0 });
  		}
```

Permalänk: https://www.webforum.nu/p/176147

## #2 — solbulle, 2009-01-02T22:08Z

Jag har kommit en bra bit på väg. I princip verkar det fungera... men.. inte om jag använder mig av funktionen beautifyTime på raden (som egentligen ska vara där i orginalscriptet:

$('result3-'+n+'-m').innerHTML = beautifyTime(rt.minute);

Då får jag tillbaks:

\[object Object\]

I vanlig ordning har jag inte en susning om varför det blir så...

Jag har inte rört den funktionen utan de ändringar jag har gjort är dessa rader:

I funktionen "Update()"

```
  	rt = getRelativeDate({day:$F('time-d'),hour:$F('time-h'),minute:$F('time-m'),second:$F('time-s')},deltaTime);
```

Ideer? Eller kanske tips om en annan funktion man kan lägga in för att just snygga till utskriften (Så att det blir 23:07:04 och inte 23:7:4 )

Permalänk: https://www.webforum.nu/p/2161167

## #3 — solbulle, 2009-01-03T03:13Z

```
function fixtime(timetofix){

var curr_min = timetofix

curr_min = curr_min + "";

if (curr_min.length == 1)
   {
   curr_min = "0" + curr_min;
   }
return curr_min;
}
```

Tjo!

Permalänk: https://www.webforum.nu/p/2161176

---

Tråden på webben: https://www.webforum.nu/amne/javascript/176147-få-ett-skript-att-även-räkna-med-sekunder
