Hej!! Jag har en liten kodsnutt som kollar om tiden är före eller efter 14:00. Problemet är att om tiden är efter 14:00 så ska den bara gälla för den dagen och inte som nu för all framtid. Alltså jag vill att If-satsen kollar om tiden är mellan 14:00 och 24:00. Någon som har något förslag? strTime = CDate(dDatum & " " & Deadline) Nej, den ville inte heller fungera. Så fort jag aktiverar strMidnatt får jag upp debiteras på allting. Vad menar du nu? Ville du inte bara kolla detta för en speciell dag? OK...Ska försöka formulera om det. Låt säga att vi har två datumar, idag och imorgon. Det finns ett antal poster som är utloopade från en databas. Dessa poster ska jag kunna påverka beroende på vilken tid det är på dagen. I detta fallet ska jag inte kunna avboka mellan 14:00 o 24:00 utan tiden ska debiteras. Problemet är att när klockan är mellan 14:00 o 24:00 så påverkas även tiderna som är inbokade imorgon. Funderingar... du vill alltså kunna styra att det är bara idag mellan 14 och 24 som det är låst, inte i morgon... Har trollat :-) fram lite kod - kopera och kör den och se om den kan vara till någon hjälp... Det är inte din lösning, men kanske en bit på väg! Hör av dig annars så får vi se om jag kan göra något... :-) OK...Var jag inte förvirrad innan så är jag det nu. Har provat denne varianten, men det ända som skrivs ut är "Har redan inträffat" oavsett vad jag ställer klockan på i servern. Har du testat att skriva ut vilka värden du egentligen jämför? Det kan vara lite lättare att se det IRL... ;-) OK...men när jag får det att fungera, om jag får det att fungera då blir ju resultatet det samma som det jag arbetat med innan. Värdena av denna kod förs ju likväl över till nästa dag, eller é jag helt ute o snurrar? Hej igen (tog lite tid) Jepp, den fungerar. Och nu förstår jag vad ni menade Andreas och Johan. Någonting måste ju styra att tiden är imorgon.Tidsintervall
<code>
dDatum = FormatDateTime(Now, 2)
Deadline = "14:00:00"
strTime = CDate(dDatum & " " & Deadline)
If DateDiff("h", strTime, Now) >= 0 Then
Response.Write "Debiteras"
ElseIf DateDiff("h", strTime, Now) <= 0 Then
Response.Write "Avboka"
End If
</code>Sv: Tidsintervall
strMidnatt = CDate(dDatum & " 23:59:59")
If DateDiff("h", strTime, Now) >= 0 AND DateDiff("s", strMidnatt, Now) < 0 Then
Borde nog fungera...
/JohanSv: Tidsintervall
Sv: Tidsintervall
Är det något sånt här du är ute efter?
<code>
If Time >= CDATE("14:00:00") Then
'Klockan är efter två
Else
'Än är det inte försent.
End If
</code>
Eller kanske du skall gämföra en tidpunk.
<code>
Dim MinTime
Dim MaxTime
MinTime = DateAdd("h", 14, Date)
MaxTime = DateAdd("d", 1, Date)
If rs("Tidpunkt") < MinTime
'Har redan inträtffat
ElseIf rs("Tidpunkt") > MaxTime
'Inträffar i framtiden
Else 'If rs("Tidpunkt") >= MinTime And rs("Tidpunkt") < MaxTime Then
'Tidpunkt inträffar idag mellan två och tolv
End If
</code>Sv: Tidsintervall
Eller ska det gälla för alla dagar?
ÄÄÄÄHHHH, Sorry, läste inte frågan ordentligt :-)
Det Andreas skrev borde ju funka.Sv: Tidsintervall
Hoppas det blev lite klarare.Sv: Tidsintervall
Jag har inte kollat exakt detta i ASP men jag vet att det i Excel och Access är så, att varje datum, dvs dag, motsvaras av ett heltal, t ex så är det idag dag nr 37658. Kolla själv genom att skriva in värdet i Excel och formatera det till datum... ;-)
Dygnet är ju uppdelat i timmar och minuter, och dessa är decimaltal... kl 12 = 0,5, kl 06 = 0,25 osv. När jag testade var tiden ,59842.
Du måste alltså ta reda på vad talvärdet är för idag kl 14 resp 24 och sedan hantera värdena utifrån det, alltså ta med både datum och tid, pröva med att addera datum och tid med varandra...
Sorry om jag är lite disträ - men jag har utbildning just nu och kan inte samla tankarna helt... ;-) Hoppas det hjälper dig på rätt väg!
/LissuSv: Tidsintervall
<code>
<table border="1" cellpadding="0" cellspacing="0" width="60%" id="AutoNumber1">
<tr>
<td width="50%">= Date()</td>
<td width="50%"><% = date()%> </td>
</tr>
<tr>
<td width="50%">= time()</td>
<td width="50%"><% = time()%> </td>
</tr>
<tr>
<td width="50%">= date() + time()</td>
<td width="50%"><% = date() + time()%> </td>
</tr>
<tr>
<td width="50%">= formatnumber(date() ,4)</td>
<td width="50%"><% = formatnumber(date() ,4)%> </td>
</tr>
<tr>
<td width="50%">= formatnumber(time() ,4)</td>
<td width="50%"><% = formatnumber(time() ,4) %> </td>
</tr>
<tr>
<td width="50%">= formatnumber(date()+ time() ,4)</td>
<td width="50%"><% = formatnumber(date() + time() ,4) %> </td>
</tr>
<tr>
<td width="50%"> </td>
<td width="50%"> </td>
</tr>
<tr>
<td width="50%">= formatnumber(date() + cdate("14:00:00") ,4), dvs (Kl 14 idag) </td>
<td width="50%"><% = formatnumber(date() + cdate("14:00:00") ,4) %> </td>
</tr>
<tr>
<td width="50%">= formatnumber(date() + 1 ,4), dvs Kl 24 idag = i morgon kl 00:00</td>
<td width="50%"><% = formatnumber(date() + 1 ,4) %> </td>
</tr>
</table>
</code>
När du har fått fram en variabel att jämföra med borde resten gå bra... :-)Sv: Tidsintervall
<code>
<%
Dim MinTime
Dim MaxTime
MinTime = FormatNumber(Date() + CDate("14:00:00") ,4)
MaxTime = FormatNumber(Date() + 1 ,4)
If FormatNumber(Date(),4) < MinTime Then
Response.Write "Har redan inträffat"
ElseIf FormatNumber(Date(),4) > MaxTime Then
Response.Write "Inträffar i framtiden"
ElseIf FormatNumber(Date(),4) >= MinTime And FormatNumber(Date(),4) < MaxTime Then
Response.Write "Tidpunkt inträffar idag mellan två och tolv"
End If
%>
</code>Sv: Tidsintervall
Jag brukar ha svårt att logiskt hålla isär vad som händer när i ett else-if-slinga... men det beror väl antingen på ovana eller lathet ;-)
Nu vet jag att jag kanske får många proffs emot mig men jag brukar använda Select Case - jag tycker jag får bättre överblick då...
Det är lätt att binda upp svansen på sig själv... Sv: Tidsintervall
<code>
<%
Dim MinTime
Dim MaxTime
MinTime = FormatNumber(Date() + CDate("14:00:00") ,4)
MaxTime = FormatNumber(Date() + 1 ,4)
'Om klockan är 19:26
Response.Write("MinTime=" & MinTime & "<br>")' MinTime=37 658,5833
Response.Write("MaxTime=" & MaxTime & "<br>")' MaxTime=37 659,0000
Response.Write("Datum som jämförs=" & FormatNumber(Date() + Time() ,4) & "<br>")' Datum som jämförs=37 658,8100
If FormatNumber(Date(),4) + Time() < MinTime Then
Response.Write "Har redan inträffat"
ElseIf FormatNumber(Date(),4) + Time > MaxTime Then
Response.Write "Inträffar i framtiden"
ElseIf FormatNumber(Date(),4) + Time >= MinTime And FormatNumber(Date(),4) + Time < MaxTime Then
Response.Write "Tidpunkt inträffar idag mellan två och tolv"
End If
%>
</code>
Verkar som om forumet förvränger min kod lite...Sv: Tidsintervall
Denna tror jag funkar - om du inte redan har löst det!
<code>
<%
Dim MinTime
Dim MaxTime
MinTime = Date() + CDate("14:00:00")
MaxTime = Date() + 1
'Om klockan är 19:26
Response.Write("MinTime=" & MinTime & "<br>")
Response.Write("MaxTime=" & MaxTime & "<br>")
Response.Write("Datum som jämförs=" & Date() + Time() & "<br>")
If Date() + Time() < MinTime Then
Response.Write "Har redan inträffat"
ElseIf date() + Time() > MaxTime Then
Response.Write "Inträffar i framtiden"
ElseIf FormatNumber(Date(),4) + Time >= MinTime And FormatNumber(Date(),4) + Time < MaxTime Then
Response.Write "Tidpunkt inträffar idag mellan två och tolv"
End If
%>
</code>Sv: Tidsintervall
//--Filofaxen??--