11. juli 2023 - 22:50Der er
11 kommentarer og 1 løsning
Konvertering af måned numre til navne i ASP
Hej
Jeg har følgende kode som oplyser mig datoen for hvornår, at webserveren sidst er blevet genstartet: ---Start på kode--- <html> <head> <title>Tidspunkt for genstart af server</title> <head> <body> <h1>Genstart af server</h1> <p> <%@ Language=VBScript %> <% Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems lastBootTime = objOperatingSystem.LastBootUpTime lastBootTime = CDate(Mid(lastBootTime, 5, 2) & "/" & Mid(lastBootTime, 7, 2) & "/" & Left(lastBootTime, 4) & " " & Mid(lastBootTime, 9, 2) & ":" & Mid(lastBootTime, 11, 2) & ":" & Mid(lastBootTime, 13, 2)) Response.Write("Serveren blev sidst genstartet den " & lastBootTime) Next %> </body> </head> </html> ---Slut på kode--- Når jeg får vist hjemmesiden, vises navnene på månederne imidlertid som tal i stedet for navne.
Hvordan får jeg lavet koden korrekt, så månedrne vises som navne i stedet?
Helt konkret skal outputtet gerne se således ud med månedernes navne på dansk: Serveren blev sidst genstartet den xx navn på måned xxxx klokken xx:xx:xx (x'erne repræsenterer tallene).
Jeg har forsøgt med følgende kode, som jeg har fundet via Google - men den fungerer ikke: <%@ Language=VBScript %> <% Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
du kan ikke pille ved data... lastBootTime = objOperatingSystem.LastBootUpTime lastBootTime = CDate(Mid(lastBootTime, det er to ting, og de kan IKKE hedde det samme. Ved linje #2 overskriver du den dato, som du har gemt i linje #1 Hvis du nu i linje #2 havde DatelastBoot = CDate(Mid(lastBootTime, og så i de efterfølgende linjer skifter alle "lastBootTime" ud med "DatelastBoot" så ville det nok virke.
Lidt nærlæsning siger at problemerne er at variablen monthName konflikter med den indbyggede funktion MonthName og at Time funktionen ikke kan bruges som den bliver brugt her.
Ok, men det er jublende dumt og forvirrende at bruge samme navn til flere ting. Det bør stoppes. Hvis man nu kalder en funktion, som forudsætter det første led, og funktionen kaldes efter den er omskrevet til andet led, så er der ingen, der ved, hvad der foregår og hvornår.
Det er fornemt, at eksperterne stiller sig til rådighed.
Jeg har nu eksperimenteret en hel del, og fundet en løsning der fungerer.
Den er følgende i ren ASP-kode: <%@ Language=VBScript %> <% Set objWMIService = GetObject("winmgmts:\\.\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems lastBootTime = objOperatingSystem.LastBootUpTime lastBootTime = WMIDateStringToDate(lastBootTime)
' Konverter månedtallet til månedsnavn på dansk monthNumber = Month(lastBootTime) monthNameValue = GetDanishMonthName(monthNumber)
Response.Write("Serveren blev sidst genstartet den " & Day(lastBootTime) & ". " & monthNameValue & " " & Year(lastBootTime) & " klokken " & TimeValue(lastBootTime))
Next
' Hjælpefunktion til konvertering af dato fra WMI-format til VBScript-datoformat Function WMIDateStringToDate(wmiDate) WMIDateStringToDate = CDate(Mid(wmiDate, 7, 2) & "/" & Mid(wmiDate, 5, 2) & "/" & Left(wmiDate, 4) & " " & Mid(wmiDate, 9, 2) & ":" & Mid(wmiDate, 11, 2) & ":" & Mid(wmiDate, 13, 2)) End Function
' Hjælpefunktion til at få det danske månedsnavn baseret på månedens nummer Function GetDanishMonthName(monthNumber) Dim monthNames monthNames = Array("januar", "februar", "marts", "april", "maj", "juni", "juli", "august", "september", "oktober", "november", "december") GetDanishMonthName = monthNames(monthNumber - 1) End Function %> --- Rigtig god dag til alle.
Mvh Anders
Synes godt om
Ny brugerNybegynder
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.