Avatar billede humlebidk Nybegynder
29. september 2003 - 01:56 Der er 4 kommentarer

Forskel mellem datoer år-måned-dag-time-minut-sekund

Jeg sidder og bakser lidt med lidt datohalløj. Det er nemt nok at finde antallet af dage og andre små enheder mellem 2 datoer. .getTime() og divider med passende faktor. 1000 så har du sekunder. Dermed kan du få sekunder, timer, dage og sågar uger uden problemer. hvis man ligger inden for 100år, så kan man bare dividerer dage med 365.25 og man får det man vil have. o0(uagtet at et år faktisk er 365.256 dage).

Jeg vil gerne have mit return i datoformat. år-måneder-dage-timer-minutter-sekunder-millisekunder. Jeg er nået til år-måneder-dage, men jeg er desværre ikke færdig med at teste om det virker i 100% så langt. Mit problem er at metoden er indviklet og dermed  er der stor chance for at noget går galt.
Nogen der har en simpel metode? Eller en som er testet og som virker?



<script>
function deltaDatoKort(dato2,dato1) {


var days=new Array()
days[0]=31
days[1]=28
days[2]=31
days[3]=30
days[4]=31
days[5]=30
days[6]=31
days[7]=31
days[8]=30
days[9]=31
days[10]=30
days[11]=31


var dato1=new Date(dato1)
var dato2=new Date(dato2)

var aar1=dato1.getFullYear()
var aar2=dato2.getFullYear()


var maaned1=dato1.getMonth()
if(maaned1<10) { maaned1="0"+maaned1 }
var maaned2=dato2.getMonth()
if(maaned2<10) { maaned2="0"+maaned2 }

var dag1=dato1.getDate()
if(dag1<10) { dag1="0"+dag1 }
var dag2=dato2.getDate()
if(dag2<10) { dag2="0"+dag2 }

var nr1=""+aar1+""+maaned1+""+dag1
var nr2=""+aar2+""+maaned2+""+dag2

var aar=+nr2-nr1
aar=String(aar)
aar=aar.substr(0,aar.length-4)
if(aar=="-" | aar=="") {
aar="0"
}


var nr3=""+maaned1+""+dag1
var nr4=""+maaned2+""+dag2
var maaned=+nr4-nr3
maaned=String(maaned)
maaned=maaned.substr(0,maaned.length-2)

if(maaned=="-") {
maaned="11"
}
if(maaned<0) {
maaned=+11+parseInt(maaned)
}
if(maaned=="") {
maaned="0"
}


    if (((aar2 % 4 == 0) && (aar2 % 100 != 0)) || (aar2 % 400 == 0)) {
          days[1] = 29;
    }
    else {
          days[1] = 28;
    }


var nr5=dag1
var nr6=dag2
var dag=+nr6-nr5
if(dag<0) {
    dag=days[parseInt(maaned2-1)]+dag
}






return(aar+","+maaned+","+dag)

}



dato2=new Date()
dato2.setFullYear(2003)
dato2.setDate(24)
dato2.setMonth(10)
dato2=dato2.getTime()

dato1=new Date()

dato1=dato1.getTime()




document.write(deltaDatoKort(dato2,dato1))

</script>


60% for en god metode, som giver et godt resultat.
Avatar billede dawin_dk Nybegynder
29. september 2003 - 03:13 #1
Avatar billede roenving Novice
04. oktober 2003 - 16:24 #2
Sådan noget ?-)

<html>
<head>
<title>TÆL NED TIL DATO</title>
<META NAME="Generator" CONTENT="Stone's WebWriter 3.5">
<script language="javascript">
var snart = new Date(2003,11,7);// 7/12-2003 måneder skal være een mindre !-)
var snartmsek = snart.getTime();
function startTael() {
  nu = new Date();
  msek = snartmsek - nu.getTime();
  var sek = Math.floor(msek/1000);
  var min = Math.floor(sek/60);
  var tim = Math.floor(min/60);
  var dg = Math.floor(tim/24);
  sek = sek%60;
  min = min%60;
  tim = tim%24;
  document.getElementById('t2').innerText = "" + dg + " dg. " + tim + " t. " + min + " min. " + sek + " sek.";
}
</script>
</head>
<body onload='setInterval(startTael,1000);'>
<form name="tform">
</form></body>
<span id="t2" style="font-family:Verdana;font-size:12px;font-weight:bold"></SPAN>
</html>
Avatar billede roenving Novice
04. oktober 2003 - 16:24 #3
-- jeg har ikke sat måneder og dage på (og specielt måneder er lidt indviklede, men hvis det er sådan noget du vil have kan jeg sikkert få tid til at hente den ind !-)
Avatar billede humlebidk Nybegynder
30. december 2003 - 20:53 #4
timer, sekunder og dage er nemt nok, og kan laves enormt nemt. det er netop måneder der kan drille slemt. og det er lige netop det jeg mangler en god, hurtig og sikker kode til. Den jeg selv har lavet stoler jeg ikke vildt på, så hvis nogen har noget godt, så giver det 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