Avatar billede steen_hansen Forsker
18. juni 2015 - 09:42 Der er 25 kommentarer og
1 løsning

Minutter skal angives til hhv. 00-15-30-45 ved hvert påbegyndt kvarter

En arbejdsopgave defineres som værende påbegyndt på denne måde:

Hvis klokkeslettet er mellem (begge inklusive ) 12:00-12:14, skrives:
<input type="text" name="minute" id="minute" value="00">

Hvis klokkeslettet er mellem (begge inklusive) 12:15-12:29, skrives:
<input type="text" name="minute" id="minute" value="15">

Hvis klokkeslettet er mellem (begge inklusive) 12:30-12:44, skrives:
<input type="text" name="minute" id="minute" value="30">

Hvis klokkeslettet er mellem (begge inklusive) 12:45-12:59, skrives:
<input type="text" name="minute" id="minute" value="45">

Hvordan laver jeg dette?

Håber spørgsmålet er til at forstå. Ellers spørg :)
Avatar billede AnyFellow Mester
18. juni 2015 - 10:53 #1
Jeg kan kun php, men mon ikke mulighederne er de samme i asp.

Jeg ville trække de 2 klokkeslæt fra hinanden og så bruge en afrund funktion, hvor du kan angive hvad der skal afrundes til.
Avatar billede steen_hansen Forsker
18. juni 2015 - 11:09 #2
kfisker, kan du give et eksempel i PHP?
Avatar billede arne_v Ekspert
18. juni 2015 - 11:59 #3
4 IF ??
Avatar billede steen_hansen Forsker
18. juni 2015 - 12:24 #4
Hej Arne

Ja, jeg prøvede, men fik det ikke på plads. Det er længe siden, det er møgforkert:

<%

    Dim xMinute, yMinute

    xMinute = minute(now)

    If xMinute < 15 Then
        yMinute = "00" ' Jeg gemmer som tekst, da der skal stå 00 i <inpute type=text
    ElseIf
        If xMinute >14 And If xMinute < 30 Then
            yMinute = "15"
        End If
    ElseIf
        If xMinute >29 And If xMinute < 45 Then
            yMinute = "30"
        End If
    Else
        yMinute = "45"
    End If

%>
Avatar billede steen_hansen Forsker
18. juni 2015 - 12:28 #5
<%

    Dim xMinute, yMinute

    xMinute = minute(now)

    If xMinute < 15 Then
        yMinute = "00"
    ElseIf
        If xMinute >14 And If xMinute < 30 Then
            yMinute = "15"
        End If
    ElseIf
        If xMinute >29 And If xMinute < 45 Then
            yMinute = "30"
        End If
    Else
        yMinute = "45"
    End If

%>

<html>

<body>

<input type="text" value="<%=yMinute%>">

</body>

</html>
Avatar billede The Real Yoda Juniormester
18. juni 2015 - 13:19 #6
en hurtig funktion til det ville være..

function roundMinute(byVal orgMinute)
  newMinute = "00"
  if cdbl(orgMinute)>14 then newMinute = "15"
  if cdbl(orgMinute)>29 then newMinute = "30"
  if cdbl(orgMinute)>44 then newMinute = "45"
  roundMinute = newMinute
end function


og så kan du bare kalde den med ..

<%=roundMinute(12)%>
og den vil så udskrive 00
Avatar billede steen_hansen Forsker
18. juni 2015 - 13:42 #7
Den kan jeg ikke lige gennemskue. Hvor får du "12" fra i <%=roundMinute(12)%>?

Jeg har lige testet det. Klokken er 13:41, men der står "13 000", og ikke "13 30"
Avatar billede steen_hansen Forsker
18. juni 2015 - 13:45 #8
Sorry, der står "13 00", og ikke "13 30"
Avatar billede steen_hansen Forsker
18. juni 2015 - 13:54 #9
Klokken er 13:52, og det har ikke ændret sig. Det ser ud til, at den konsekvent skriver 00. Det vil dog passe i et kvarter hver time :)
Avatar billede michael_stim Ekspert
18. juni 2015 - 15:06 #10
Du skal nok have noget substring på din tid, så den kun tager de to sidste cifrer. Som det er nu tager den timen (13).
Avatar billede AnyFellow Mester
18. juni 2015 - 15:11 #11
I php ville jeg lave det således:

$minute_rounded = floor(date('i')/15)*15;

Tag minutterne og divider dem med 15. Resultatet heraf rundes ned til nærmeste heltal og ganges med 15.
Avatar billede steen_hansen Forsker
18. juni 2015 - 15:19 #12
Jeg lavede dette, og det ser foreløbig ud til at virke (meget simpelt):

<%

    Dim newMinute
    newMinute = minute(now)

    If newMinute > 44 Then
        roundedMinute = "45"
    End If
    If newMinute > 29 Then
        roundedMinute = "30"
    End If
    If newMinute > 14 Then
        roundedMinute = "15"
    End If
    If newMinute < 15 Then
        roundedMinute = "00"
    End If

%>

Ups, jeg skal vist lige rette det til ElseIf. Men det ser ud til at virke.
Avatar billede AnyFellow Mester
18. juni 2015 - 15:30 #13
Har ingen idé om hvordan man koder asp, men ud fra en hurtig google-søgning vil jeg tro mit eksempel i asp se således ud (der findes ikke noget tilsvarende floor i asp):

<%

    Dim newMinute
    newMinute = minute(now)

    If round(newMinute/15) > newMinute/15 Then
        roundedMinute = (round(newMinute/15)-1)*15
    Else
        roundedMinute = round(newMinute/15)*15
    End If

%>
Avatar billede steen_hansen Forsker
18. juni 2015 - 15:42 #14
Det virker ikke helt. Klokken er 15:41, men den viser 15:15. Der burde stå 15:30. Nogen gode idéer?
Avatar billede steen_hansen Forsker
18. juni 2015 - 15:43 #15
Sorry, så ikke lige dit indlæg, kfisker. Tjekker det lige....
Avatar billede steen_hansen Forsker
18. juni 2015 - 15:48 #16
Klokken er 15:46, og den viser korrekt 15:45 :) Foreløbig ser det lovende ud, kfisker :)

Jeg tjekker det lige løbende, og virker det hele vejen rundt, får du pointene :)
Avatar billede steen_hansen Forsker
18. juni 2015 - 16:24 #17
Det virker, kfisker. Lægger du et svar?
Avatar billede steen_hansen Forsker
18. juni 2015 - 18:10 #18
Det virker ikke helt pludselig 18:09 viser 18:0
Avatar billede steen_hansen Forsker
18. juni 2015 - 18:11 #19
Det virker ikke helt pludselig 18:09 viser 18:0, men burde vise 18:00
Avatar billede AnyFellow Mester
18. juni 2015 - 19:32 #20
Ved ikke hvad funktion du kan bruge i asp, men du skal søge på foranstillede nuller eller leading zeroes. Så burde du kunne få et nul på.
Avatar billede steen_hansen Forsker
19. juni 2015 - 00:39 #21
Jeg fandt et meget simpelt script:

Function ZeroPadLeft(intValue)
    ZeroPadLeft = Right("0" & intValue, 1)
End Function

Er der noge ASP-hajer, der kan hjælpe med denne?

kfisker, lægger du et svar?
Avatar billede steen_hansen Forsker
19. juni 2015 - 08:23 #22
Jeg havde selv noget liggende, den er klaret:

<%

    Function AddZ(ByVal vNumber)
        AddZ = CStr(vNumber)

    If len(AddZ) < 2 Then _
        AddZ = "0" & AddZ
    End Function

    Function AddQ(ByVal nNumber)
        AddQ = CStr(nNumber)

        If len(AddQ) < 2 Then _
            AddQ = "0" & AddQ
    End Function

    Function EnsureNum(str)
        Dim strN : strN = str
        If Not IsNumeric(strN) Then strN = 0
        strN = Int(strN)
        EnsureNum = strN
    End Function

%>

<%=addZ(hour(now))%>
<%=addZ(roundedMinute)%>

Jeg mangler lige et svar, kfisker :)
Avatar billede AnyFellow Mester
19. juni 2015 - 11:15 #23
Glad for at kunne hjælpe.

Svar :)
Avatar billede steen_hansen Forsker
19. juni 2015 - 22:19 #24
Takker mange gange :)
Avatar billede steen_hansen Forsker
03. juli 2015 - 12:50 #25
kfisker, hvis det skal ændres til istedet for at vide minutstart, men minutslut, hvordan kan det omskrives?

Hvis klokken (minuttallet) er

15:00 - 15:14 -> 15:15
15:15 - 15:29 -> 15:30
15:30 - 15:44 -> 15:45
15:45 - 15:59 -> 16:00

Den oprindelige kode:

<%

    Dim newMinute
    newMinute = minute(now)

    If round(newMinute/15) > newMinute/15 Then
        roundedMinute = (round(newMinute/15)-1)*15
    Else
        roundedMinute = round(newMinute/15)*15
    End If

%>

- rettede jeg til

<%

    Dim newMinute
    newMinute = minute(now)

    If round(newMinute/15) > newMinute/15 Then
        roundedMinute = (round(newMinute/15)+1)*15'<-- -1 rettede jeg til +1
    Else
        roundedMinute = round(newMinute/15)*15
    End If

%>

Og det viser det rigtigt. Pånær klokken bliver til 15:60 i stedet for 16:00
Avatar billede AnyFellow Mester
06. juli 2015 - 12:35 #26
Jeg tænker noget i denne retning:

<%

    Dim newMinute
    newMinute = minute(now)

    If (newMinute != 0) Then
        If round(newMinute/15) > newMinute/15 Then
            roundedMinute = (round(newMinute/15)+1)*15

            If roundedMinute == 60 Then
                roundedMinute = 0
            End If
        Else
            roundedMinute = round(newMinute/15)*15
        End If
    Else
        roundedMinute = 15
    End If

%>

Jeg har også rettet koden til, så den kan håndtere et helt klokkeslæt, altså når der er 0 minutter.

Når du vender minutterne rundt som du ønsker, ville jeg overveje at lave det således i stedet, for overskuelighedens skyld:

<%

    Dim newMinute
    newMinute = minute(now)

    If newMinute < 15 Then
        roundedMinute = 15
    Else If newMinute < 30 Then
        roundedMinute = 30
    Else If newMinute < 45 Then
        roundedMinute = 45
    Else If newMinute < 60 Then
        roundedMinute = 0
    Else
      'Fejl, newMinute er enten mindre end 0 eller større end 59
    End If

%>
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

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