Just nu i M3-nätverket
Gå till innehåll
Lisasv

LÖST Splitta fram rätt timmar i ett tidsintervall

Rekommendera Poster

Någon som kan hjälpa mig med hur man kan "splitta" ett datum beroende på vad som ligger i tidsintervallet.

 

DATUM1= "2015-09-08 18:00"

DATUM2= "2015-09-08 23:00"

 

Får fram antalet timmar med:

<%= DateDiff("h", DATUM1, DATUM2) %>

 

Det jag önskar är att datum1 och datum2 jämförs och se om det överlappar något i intervallen och då delar upp antalet timmar.

Konstant som aldrig ändras:

INTERVALL1 = 19:00-22:00

 

 

Resultatet jag vill ha av följande är:

 

TOTAL_TIMMAR = 5

 

TOT_INTERVALL1 = 3

TOT_OVRIG = 2

 

Alltså TOT_INTERVALL1 som jag inte förstår hur jag ska lyckas få fram.

 

Någon som har en aning om hur jag ska lösa detta problem?

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag har kanske missat något, men om intervall1 är konstant så kommer väll tot_intervall1 också vara konstant? För det verkar som att det är dom timmarna du räknat på.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jaha!

Då är det väll lite iffande som behövs. Finns säkert något elegantare sätt att göra det på, men då det verkar gälla VBScript och det är något jag glömt ganska mycket av så kör vi på enklast möjliga.

If datum1 < intervall1Start And datum2 > intervall1End Then
  tot_intervall1 = 3
Else If datum1 > intervall1Start And datum2 > intervall1End Then
  tot_intervall1 = DateDiff("h", datum1, intervall1End)
Else If datum1 < intervall1Start And datum2 < intervall1End Then
  tot_intervall1 = DateDiff("h", intervall1Start, datum2)
Osv etc.

Det jag gör här är att på ett tyvärr ganska otydligt sätt kolla om timmarna kommer i intervall1 eller inte. Jag borde nog förtydliga med att vi enbart vill kolla timmarna. Så med DatePart eller liknande plocka enbart ut timmen som gäller.

 

Om timmen i datum1 är mindre än timmen då intervall1 börjar och timmen i datum2 är större än timmen då intervall1 slutar, då täcker tiden hela intervallet.

 

Om timmen i datum1 är större än intervall1 och timmen i datum2 är större än intervall1 då överlappar tiden en bit och vi gör en DateDiff på datum1 och när intervall1 slutar. Då får vi timmarna då tiden överlappar.

 

Sen fortsätter vi på det viset med iffar tills vi täckt alla möjligheter.

 

Förstod jag dig rätt när jag tolkade ditt problem på det sättet?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...