Avatar billede donslund Nybegynder
02. januar 2005 - 19:51 Der er 7 kommentarer og
1 løsning

Slå sekunder til

Kunne Roenving ikke lige slå sekunder til i denne:

<html>
<head>
<style>
span {
color: red;
}
</style>
<script>
var birth = new Date(2002,03,01,04,55,00) //Her skrives din søns fødselsdato, eks. 2002,03,01,04,55,00 (01-4-2002 04:55) bemærk at der skal trækkes 1 fra måneden

function tael() {

var idag = new Date();

var v = idag.getFullYear() - birth.getFullYear(); //Antal år
var harHaft = 0;

if (idag.getMonth() < birth.getMonth()) { //Men har han haft fødselsdag i år?
  v--;
  harHaft = -1;
}

else {
  if (idag.getMonth() == birth.getMonth()) {
    if (idag.getDate() < birth.getDate()) {
      v--;
      harHaft = -1;
    }
  }
}

var lastBirthDate = new Date(idag.getFullYear() + harHaft, birth.getMonth(), birth.getDate(), birth.getHours(), birth.getMinutes(), birth.getSeconds()); //Sidste fødselsdsdag


if (idag.getDate()>=birth.getDate()) {
  var sx = idag.getMonth()
  var x = (idag.getMonth() + 12 - lastBirthDate.getMonth()) % 12; //Måneder siden sidste fødselsdag
} else {
  var sx = idag.getMonth() - 1
  var x = (idag.getMonth() + 11 - lastBirthDate.getMonth()) % 12; //Måneder siden sidste fødselsdag

}

var glAar = sx<0?-1:0;

var lastMonthDate = new Date(idag.getFullYear() + glAar, (birth.getMonth() + x) % 12, birth.getDate(), birth.getHours(), birth.getMinutes(), birth.getSeconds()); //Sidste fødselsdsdag

var sm = (idag.getTime() - lastMonthDate.getTime())/(60000) ; //Minutter siden sidste månedsfødselsdag
var st = sm / 60; //Timer siden sidste månedsfødselsdag
var z = st / 24; //Dage siden sidste månedsfødselsdag
//var y = Math.floor(z / 7); //Uger siden sidste månedsfødselsdag
z = Math.floor(z); //Dage siden sidste månedsfødselsdag
st = Math.floor(st % 24); //Timer siden sidste timetal, som fødselsdag var
sm = Math.floor(sm % 60); //Minutter siden sidste minuttal, som fødselsdag var
//ss = Math.floor(ss % 60); //Sekunder siden sidste sekundtal, som fødselsdag var


str = v + " år, " + x + ((x == 1) ? " måned, " : " måneder, ") + z + ((z == 1) ? " dag, " : " dage, ") + st + ((st == 1) ? " time, " : " timer, ") + sm + ((sm == 1) ? " minut" : " minutter");
getObj("samletop").innerHTML = str;
setTimeout("tael();", 1000);
}

function getObj(id) {
if (document.getElementById)
return document.getElementById(id);
if (document.all)
return document.all[id];
}
</script>
</head>
<body onLoad="tael();">
<h3>Tid fra d. 01/04-2002</h3>
<span id="samletop"></span>
</body>
</html>
Avatar billede roenving Novice
04. januar 2005 - 01:04 #1
Jeg har lavet et lille bibliotek, som udvider Date-objekter, så det nu er en del nemmere !-)

Hent zippen fra http://roenving.users.whitehat.dk/date/roenvingDate.html og udpak .js-filen, så kan du nøjes med:

<script language="javascript" type="text/javascript">
var birth = new Date(2002,03,01,04,55,00)
function updateTime(){
  document.getElementById('samletop').innerHTML = birth.age(0,0,6,1);
}
window.onload = function(){setInterval('updateTime()',1000)}
</script>

<script language="javascript" type="text/javascript" src="roenvingDate.js"></script>
Avatar billede roenving Novice
04. januar 2005 - 01:17 #2
-- så kan du forøvrigt vælge antallet af værdier, du viser ved at ændre 6-tallet til et tal mellem 1 og 7, hvor 1 kun returnerer år, mens 7 også medtager millisekunder !-)
Avatar billede donslund Nybegynder
04. januar 2005 - 08:35 #3
Det ser rigtig godt ud, men hvi jeg nu vil have værdierne stående på en anden måde en på linie adskilt af komma? Hvor retter jeg det? Jeg har kigget i roenvingDate.js men synes ikke jeg kan gennemskue det.
Avatar billede roenving Novice
05. januar 2005 - 16:53 #4
?-)

Den afart af age-funktionen, som jeg har skrevet her(.age(0,0,6,1) !-), leverer en streng i formatet:

2 år, 9 måneder, 4 dage, 11 timer, 56 minutter, 18 sekunder

Hvor foranstillede 0-ting vil blive fjernet !o]
Avatar billede roenving Novice
05. januar 2005 - 16:55 #5
-- ellers kan du benytte dig af værdierne til at lave en tekst, som du vil, f.eks.

var a = birth.age();
document.getElementById('samletop').innerHTML = a[0] + " tekst1 " + a[1] + " tekst2";//osv...
Avatar billede donslund Nybegynder
06. januar 2005 - 10:50 #6
Perfekt. Smid et svar.
Avatar billede roenving Novice
08. januar 2005 - 09:19 #7
Velbekomme '-)
Avatar billede roenving Novice
08. januar 2005 - 13:40 #8
-- og tak for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester