Avatar billede pmnielsen Novice
04. februar 2011 - 22:29 Der er 15 kommentarer og
2 løsninger

udregn tid mellem 2 klokkeslet

Jeg har et script hvor jeg har 2 variabler med tider fx. "07:00" og "15:15" de bliver modtaget som skrevet altså med :
er der noget der kan hjælpe mig hvordan jeg får javascript til at regne ud hvor mange time og minutter der er mellem de to tider.

den skulle gerne retunerer følgende var.
timer=8
minuter=15
Avatar billede majbom Novice
04. februar 2011 - 23:03 #1
er start og slut altid samme dag?

ikke noget med start kl. 23:00 d. 23/2 og slut kl. 07:30 d. 24/2?
Avatar billede olsensweb.dk Ekspert
04. februar 2011 - 23:06 #2
hvis start/slut altid er sammen dag, som splazz, spørger om kna du bruge denne:
<script type="text/javascript">
    //<![CDATA[
   
    // http://www.eksperten.dk/spm/924459
    function Time2Sec(timestr){
        var sec = 0;
        var timearray = timestr.split(':'); 
        sec = parseInt(timearray[0]*60*60); // timer
        sec += parseInt(timearray[1]*60);     
        return sec;         
    }
   
    function formattime(sec){
        days    = parseInt( sec/86400 );
        hours  = parseInt( (sec/3600) % 24 );
        minutes = parseInt( (sec / 60) % 60 );
        seconds = parseInt( sec % 60 );
        return "dage = "+days+" Timer = "+hours+" minutter = "+minutes+" sec = "+seconds;
    }

   
//]]>
</script>

  <body>
   
    <script type="text/javascript">     
        time1sec = Time2Sec('07:00');
        time2sec = Time2Sec('15:15');
        sec = time2sec-time1sec;
        document.write(formattime(sec));
    </script>     
  </body>
Avatar billede webweaver Praktikant
04. februar 2011 - 23:25 #3
Eller lidt mere simpelt, bare denne som jeg lige har lavet;

<script type="text/javascript">

var time1 = "07:00";
var time2 = "15:15";

time1 = time1.split(':');
time2 = time2.split(':');

var hours = time2[0] - time1[0];
var minutes = time2[1] - time1[1];

document.write(hours + ' timer <br>');
document.write(minutes + ' minutter');

</script>


Dog samme problematik som ovenstående script. Det skal være samme dag og time1 skal være mindre end time2, da ellers tallet vil blive negativt.

Fx vil time1 = 16:20 og time2 15:15 give -1 time og -20 minutter.
Avatar billede majbom Novice
04. februar 2011 - 23:25 #4
Avatar billede majbom Novice
04. februar 2011 - 23:28 #5
-> webweaver - får du ikke et forkert resultat, hvis du bruger:

start 07:15
slut 08:00

?
Avatar billede webweaver Praktikant
04. februar 2011 - 23:43 #6
Nope splazz. Den regner det korrekt ud. Men som nævnt, vil den give et negativt minuttal, i og med at start er større end slut. Som også nævnt sammen med det postede script. Det samme gør sig gældende for det script ronols postede og det som du henviser til (hvorfor man/du har spærret muligheden for at lave den udregning) :)
Avatar billede webweaver Praktikant
04. februar 2011 - 23:48 #7
Ahh, nu ved jeg hvad du mener splazz. Skulle lige sidde og fundere over det. Du har ret. Hvis han skal bruge tiden imellem og ikke bare timer trukket fra hinanden og minutter trukket fra hinanden, vil det ikke passe. Du fisker efter 45 minutter. Det vil mit script ikke returnere. Det har du fuldstændig ret i!
Avatar billede majbom Novice
04. februar 2011 - 23:49 #8
med dit script vil 07:15 - 08:00 give 1 time og minus 15 minutter

og der er start jo ikke større end slut - resultatet skulle være 0 timer og 45 minutter

som på mit eksempel
Avatar billede majbom Novice
04. februar 2011 - 23:50 #9
godt, så er vi enige :)

#0 er nok hoppet i seng og det vil jeg osse, så må vi se i morgen hvad han skal bruge.

det bliver lidt mere kompliceret hvis det er hen over midnat...
Avatar billede tjens Nybegynder
05. februar 2011 - 00:00 #10
Man kan også arbejde med det indbyggede Date objekt:
    var aTime1 = document.getElementById("inpTime1").value.split(':');
    var aTime2 = document.getElementById("inpTime2").value.split(':');
    var oldDate = new Date( 2010, 02, 02, aTime1[0], aTime1[1]);
    var newDate = new Date( 2010, 02, 02, aTime2[0], aTime2[1]);
    var diffDate = new Date(newDate-oldDate);
    alert( diffDate.getUTCHours() + ":" + diffDate.getUTCMinutes());
(År måned dag er hårdkodet til en tilfældig dato, indtil vi ved om intervallet kan krydse midnat)
Avatar billede webweaver Praktikant
05. februar 2011 - 00:01 #11
Minutter er større, hvis man ser det i timer og minutter adskilt. start er 00 og slut er 15. Derfor minus 15.

Der kan så forholdsvis nemt tilføjes en korrigation, der siger at 1 time = 60. Så står der 60 minus 15. Well, det giver vidst de berømte 45 minutter. Hehe..

Men selvfølgelig, når jeg læser #0s indlæg igennem igen, er det din/ronols funktion personen søger :-)
Avatar billede pmnielsen Novice
05. februar 2011 - 07:28 #12
Tak for de mange gode svar. det er lige det jeg skal bruge.

Tiderne er altid samme dag, så det er ikke noget problem.

Ved ikke hvad man gør med point. point til alle eller til de første.
skriv svar.
Avatar billede webweaver Praktikant
05. februar 2011 - 08:54 #13
Det er lidt forskelligt. Det kommer an på hvilken løsning du f. eks. vælger, (flere her, som virker) eller om du har fået noget ud af alle svarene. :-)

Jeg synes at splazz og ronols skal have point her, da De trods alt var de første med hjælpen :)

Du kan først tildele dem point, når De har lagt et svar hver.
Avatar billede olsensweb.dk Ekspert
05. februar 2011 - 14:26 #14
du får mit svar her, accepter kun hvis du har kunne bruge indlægget, ellers afvis svaret.

tjens indlæg virker også, dejlig kort, men som du kan se kan det gøres på mange måder

nb: vent med at gøre det til splazz har svaret, da du lukker spørgsmålet når du accepterer et svar.
Avatar billede majbom Novice
06. februar 2011 - 09:17 #15
svar kommer her :)
Avatar billede majbom Novice
06. februar 2011 - 09:17 #16
ej vent - her :)
Avatar billede majbom Novice
06. februar 2011 - 21:06 #17
tfp :)
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