Avatar billede steen_hansen Forsker
04. juni 2022 - 14:55 Der er 10 kommentarer og
1 løsning

Case Select

Jeg vil gerne sætte engelske endelser efter datoen:

1st, 2nd, 3rd, 4th, 5th osv

Jeg forsøger mig med det nedenstående, men datoen i dag kommer til at stå som "4st" - fourst. Og den er jo ikke videre gangbar. Hvad gør jeg galt?

Dim i, Dextension
i = Cint(Day(date))

Select Case Dextension
    Case i = 1, 21, 31
        Dextension ="st"
    Case i = 2, 22
        Dextension = "nd"
    Case i = 3, 23
        Dextension = "rd"
    Case i = 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 24, 25, 26, 27, 28, 29, 30
        Dextension = "th"
End Select
Avatar billede arne_v Ekspert
04. juni 2022 - 15:01 #1
Utestet:

Select Case i
    Case 1, 21, 31
        Dextension ="st"
    Case 2, 22
        Dextension = "nd"
    Case 3, 23
        Dextension = "rd"
    Case 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 24, 25, 26, 27, 28, 29, 30
        Dextension = "th"
End Select
Avatar billede arne_v Ekspert
04. juni 2022 - 15:02 #2
Den sidste Case kunne laves som Case Else.
Avatar billede steen_hansen Forsker
04. juni 2022 - 15:14 #3
Hej Arne

Så forsvinder extension helt
Avatar billede steen_hansen Forsker
04. juni 2022 - 15:18 #4
Jeg mener, at det skal være

Select Case Dextension

og ikke

Select Case i

Den skal jo udskrive Dextension, som enten er st, nd, rd eller th, afhængigt af datoen
Avatar billede arne_v Ekspert
04. juni 2022 - 15:32 #5
Den Case Select assigner kun en værdi til DExtension - den skal udskrives andetsteds.

Hvad indeholder i?

For syntax se eksemplet nederst https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/select-case-statement eller https://ss64.com/vb/select.html
Avatar billede steen_hansen Forsker
04. juni 2022 - 17:27 #6
Dim i, Dextension
i = Cint(Day(date))
Avatar billede steen_hansen Forsker
04. juni 2022 - 23:41 #7
Jeg fandt faktisk løsningen: https://www.mikesdotnetting.com/article/22/date-formatting-in-vbscript

<%
Select Case Day(Now())
Case 1,21,31
ordsuffix = "st"
Case 2,22
ordsuffix = "nd"
Case 3,23
ordsuffix = "rd"
Case else
ordsuffix = "th"
End select
Response.Write (WeekDayName(WeekDay(Now())))
Response.Write (", ")
Response.Write (MonthName(Month(Now())))
Response.Write (" ")
Response.Write (Day(Now())
Response.Write (ordsuffix)
Response.Write (" ")
Response.Write (Year(Now())
%>

Resultatet på den ovenstående side viser "Sunday, April 8th 2007"

Men (WeekDayName(WeekDay(Now()))) bliver så udskrevet på dansk, og her havde lavet noget hjemmeklamp (som dog næsten virkede, pånær månedsnavne, af en eller anden årsag. Der kom ikke nogen månedsnavne ud på siden) for at få det udskrevet på engelsk:

<%
If WeekdayName(Weekday(date)) = "Mandag" Then
    vDay = "Monday"
ElseIf WeekdayName(Weekday(date)) = "Tirsdag" Then
    vDay = "Tuesday"
ElseIf WeekdayName(Weekday(date)) = "Onsdag" Then
    vDay = "Wednesday"
ElseIf WeekdayName(Weekday(date)) = "Torsdag" Then
    vDay = "Thursday"
ElseIf WeekdayName(Weekday(date)) = "Fredag" Then
    vDay = "Friday"
ElseIf WeekdayName(Weekday(date)) = "Lørdag" Then
    vDay = "Saturday"
ElseIf WeekdayName(Weekday(date)) = "Søndag" Then
    vDay = "Sunday"
End If
If MonthName(Month(date)) = "Januar" Then
    xMonth = "January"
ElseIf MonthName(Month(date)) = "Februar" Then
    xMonth = "February"
ElseIf MonthName(Month(date)) = "Marts" Then
    xMonth = "March"
ElseIf MonthName(Month(date)) = "April" Then
    vMonth = "April"
ElseIf MonthName(Month(date)) = "Maj" Then
    xMonth = "May"
ElseIf MonthName(Month(date)) = "Juni" Then
    xMonth = "June"
ElseIf MonthName(Month(date)) = "Juli" Then
    xMonth = "July"
ElseIf MonthName(Month(date)) = "August" Then
    xMonth = "August"
ElseIf MonthName(Month(date)) = "September" Then
    xMonth = "September"
ElseIf MonthName(Month(date)) = "Oktober" Then
    xMonth = "October"
ElseIf MonthName(Month(date)) = "November" Then
    xMonth = "November"
ElseIf MonthName(Month(date)) = "December" Then
    xMonth = "December"
End If
%>

<%=xMonth%><%=vDay%>

Men med Day(Now()) forsvinder den mulighed nu. Ved du hvordan jeg ville kunne få udskrevet ugedage og navne på måneder på engelsk?

Jeg har forsøgt at udskifte

(WeekDayName(WeekDay(Now())))

med vDay

Men så bliver der navnet på ugedagen i dag ikke udskrevet
Avatar billede arne_v Ekspert
05. juni 2022 - 02:25 #8
Prøv og kør denne lille ASP fil:

<%
Response.Write (WeekDayName(WeekDay(Now())))
Response.Write (" ")
Response.Write (MonthName(Month(Now())))
Response.Write ("<br>")
Session.LCID = 1030 ' da-DK
Response.Write (WeekDayName(WeekDay(Now())))
Response.Write (" ")
Response.Write (MonthName(Month(Now())))
Response.Write ("<br>")
Session.LCID = 1033 ' en-US
Response.Write (WeekDayName(WeekDay(Now())))
Response.Write (" ")
Response.Write (MonthName(Month(Now())))
Response.Write ("<br>")
%>
Avatar billede steen_hansen Forsker
05. juni 2022 - 11:10 #9
Så spiller det sq :) 1000 tak for hjælpen, arne_v :)
Avatar billede steen_hansen Forsker
05. juni 2022 - 13:20 #10
Og siden kommer lige her, hvis der er andre, der står overfor de samme udfordringer:

<% LICD = 1033 %>
<html>

<body>
<div>
    <ul class="nav nav-hover justify-content-center justify-content-sm-end m-0">
    <%
    Select Case Day(Now())
        Case 1,21,31
            ordsuffix = "st"
        Case 2,22
            ordsuffix = "nd"
        Case 3,23
            ordsuffix = "rd"
        Case Else
            ordsuffix = "th"
    End Select
    %>
        <li class="nav-item"><a href="#" class="nav-link"><i class="fal fa-calendar fa-fw"></i> <strong><%=(WeekDayName(WeekDay(Now())))%>, &nbsp;<%=(MonthName(Month(Now())))%>&nbsp;<%=(Day(Now()))%><%=(ordsuffix)%>&nbsp;<%=(Year(Now))%> (<img src="/includes/svg/thailand.svg" class="w-10" title="By Thai time reckoning"><%=(Year(Now)) + 543%>) &nbsp;&nbsp;&nbsp;Week <%=DatePart("ww",date(),2,2)%> &nbsp;&nbsp;&nbsp;<i class="fal fa-watch fa-fw"></i> <span id="clock"></span></a></strong></li>
    </ul>
</div>

</body>
</html>
Avatar billede steen_hansen Forsker
05. juni 2022 - 13:46 #11
<% LICD = 1033 %> - FORKERT
<% Session.LCID = 1033 %> - KORREKT
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