Gå til innhold

Summere to tidsfelt, og telle ned til gitt tid...


Anbefalte innlegg

Heisann! Nå har jeg søkt en del på nettet for svaret uten hell, så da spør vi!

 

Dette er dealen: Jeg driver og lager et oversiktsskjema for flyturer som jeg kan vise statisk på en stor skjerm. Dette legges inn via en php side og inn til en sql database. Dette var den enkle dealen for min del :p hehe

 

På skjemaet hvor jeg legger til flyturer, har jeg tre felt, hvor jeg legger til når jeg kommer til å ta av, og hvor lenge jeg regner med å fly, og når jeg regner med å være tilbake. Det jeg vil, er å automatisk få regnet ut det siste feltet.

 

Formatet er: 00:00.

 

Eks: Jeg regner med å ta av 18:00(ETD), og skal fly i 02:45(EET) (altså to timer og 45 min). Da vil jeg få regnet ut siste text-feltet(ETA) automatisk, og få det til å stå 20:45 der.

 

Case II:

I tillegg til dette skal det på oversiktssiden(hvor det er listet opp mange flyturer), stå en counter som teller ned tid til jeg skal være tilbake. Disse dataene, skal være basert på faktisk takeoff-tid(som er et nytt felt), og EET.

 

How to do this..? :)

 

Vet dette kanskje er litt kronglete fortalt, men vi prøver :)

 

edit: Om dette kan løses via PHP på klient/serversiden, tar jeg gjerne imot forslag til det også :)

Endret av neofix
Lenke til kommentar
Videoannonse
Annonse

For å regne ut tidsforskjellen, er det enklest å lage en egen funksjon som man legger i header.

 

 function tidsforskjell() {

   var tid1 = new Date();
   var tid2 = new Date();

   //henter strenger
   var tid_str1 = document.forms[0].elements[0].value;
   var tid_str2 = document.forms[0].elements[1].value;

   //sjekk
   if ( tid_str1.indexOf(":") <= 0)
      return "";
   if ( tid_str2.indexOf(":") <= 0)
      return "";

   //endrer Date-informasjon
   tid1.setHours( tid_str1.substring(0, tid_str1.indexOf(":")  );
   tid1.setMinutes( tid_str1.substring(tid_str1.indexOf(":"), tid_str1.length);
   tid2.setHours( tid_str2.substring(0, tid_str2.indexOf(":")  );
   tid2.setMinutes( tid_str2.substring(tid_str2.indexOf(":"), tid_str2.length);


   var td = tid1 - tid2();
   return "" + td.getHours() + ":" + td.getMinutes(); 
 }

 

Funksjonen kan man registrer til en event ved onchange-attributtet:

 onchange="document.forms[..].elements[..].value = tidsforskjell();"

 

For case2 sin del, så kan det løses med hjelp av en timer. Bruk setInterval(..) og clearInterval(..). Her er et enkelt eksempel som du kan lære av.

Lenke til kommentar

Framgangsmåte i php:

For hvert klokkeslett du ønsker å sammenlikne (fks 12:30 og 14:45), bruker du substr til å hente ut timger og minutt. Hver av disse legger du inn i mktime. trekker du fra den første verdien som har gått gjennom mktime fra den andre, vil du få tidsforskjellen mellom dem i sekunder. Når er det bare å dele, og printe ut.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...