Just nu i M3-nätverket
Jump to content

Splitta fram rätt timmar i ett tidsintervall


Lisasv

Recommended Posts

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?

 

 

Link to comment
Share on other sites

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å.

Link to comment
Share on other sites

Jag tror att TS menar att tidsspannet är konstant.

 

Då Datum1 och Datum2 kan variera är det inte säkert att det hamnar inom INTERVALL1.

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...