Avatar billede mekaniker Nybegynder
29. maj 2002 - 20:56 Der er 20 kommentarer og
1 løsning

Datoformat

Jeg har et problem med at vise datoen rigtigt.

Datoen bliver hevet ud fra en database. Og når jeg køre det lokalt på min WinXP med ISS, som er engelsk vises datoen som den skal nemlig: 29-05-2002
Men når jeg lægger det ud på en server hos digiweb ser det ud som følgende: 02-05-29

Hvad sker der her...??
Avatar billede tmceu Praktikant
29. maj 2002 - 21:01 #1
Tilføj eks. Session.LCID = 1030 (for dansk)
Avatar billede kimiwan Nybegynder
29. maj 2002 - 21:01 #2
i toppen af din side skal du sætte locale til 1030:

session.lcid = 1030 'sætter til dansk locale
Avatar billede tmceu Praktikant
29. maj 2002 - 21:05 #3
Den skal i øvrigt indsættes i toppen af koden.

Du kan se en komplet liste over LCID i VBScript dokumentationen, som kan downloades hos Microsoft. Hvis du ikke har den, kan du søge efter vbsdoc.exe
Avatar billede mekaniker Nybegynder
29. maj 2002 - 21:12 #4
Det hjælper ingenting, uanset om jeg skriver det eller ej. Det ser stadig sådan ud 02-05-29.

Min ISS er også engelsk, og hvis det var derfor ville det vel også se ud som følgende: 05-29-2002

Hvor bliver de 2 sidste ciffer af i året..
Avatar billede tmceu Praktikant
29. maj 2002 - 21:20 #5
Så kig i stedet på FormatDateTime funktionen. Men den er også afhængig af indstillingerne på serveren.
Avatar billede mekaniker Nybegynder
29. maj 2002 - 21:21 #6
I min database står det også rigtigt 29-05-2002, feltet er defineret som short date

//Mekaniker
Avatar billede tmceu Praktikant
29. maj 2002 - 21:23 #7
Hvis det ikke løser problemet, kan du også overveje en funktion i stil med denne:

Function MyDate(varDate)
' Returnerer en dato formateret som DD.MM.YYYY

dim intDay, intMonth, intYear

    If IsDate(varDate) Then
        intDay = Day(varDate)
        intMonth = Month(varDate)
        intYear = Year(varDate)

        If Len(intMonth) = 1 Then intMonth = "0" & intMonth
        If Len(intDay) = 1 Then intDay = "0" & intDay

        If Len(intYear) = 2 Then
            MyDate = intDay & "." & intMonth & "." & "20" & intYear
        Else
            MyDate = intDay & "." & intMonth & "." & intYear
        End If
    Else
        MyDate = "Ugyldig dato"
    End If

End Function
Avatar billede mekaniker Nybegynder
29. maj 2002 - 21:29 #8
Den har jeg også prøvet, den laver noget jeg slet ikke kan forklare.
nemlig følgende:
2-5-2029

sådan ser min dato funktionud jeg har prøvet:

Function FormatTimeDato(theDate)
    FormatTimeDato = day(thedate) & "-" & month(thedate) & "-" & year(thedate)
End Function

<%=FormatTimeDato(rs("hitdato"))%>
Avatar billede tmceu Praktikant
29. maj 2002 - 21:32 #9
Det skyldes at day og month funktionerne kun returnerer ét ciffer for 1-9. Kig lige på min funktion, for det tager den højde for, ved at kontrollere længde på dag/måned.
Avatar billede mekaniker Nybegynder
29. maj 2002 - 21:35 #10
>>tmceu

Nu har jeg lige prøvet din datofunktion den laver det samme.
Nemlig:
02.05.2029
Avatar billede mekaniker Nybegynder
29. maj 2002 - 21:36 #11
Den skulle gerne vise 29.05.2002, men det kan da godt være den vil være lidt foran *S*
Avatar billede tmceu Praktikant
29. maj 2002 - 21:43 #12
<SNIP>Min ISS er også engelsk, og hvis det var derfor ville det vel også se ud som følgende: 05-29-2002</SNIP>

Det kommer an på om det er US eller British engelsk.

Hvilken værdi får du, hvis du tilføjer flg. linie:

Response.Write session.LCID
Avatar billede mekaniker Nybegynder
29. maj 2002 - 21:54 #13
hvis jeg fjerner Session.LCID = 1030 fra mit site
retunerer Response.Write session.LCID: 1030
Avatar billede mekaniker Nybegynder
29. maj 2002 - 21:57 #14
Nu har jeg lige tjekket et andet site som ligger på samme server og her er ingen fejl.

Kan det være databasen..??, jeg har Office XP us, men den køre med danske dato og tal formater
Avatar billede tmceu Praktikant
29. maj 2002 - 21:58 #15
Det forklarer jo så hvorfor der ikke er nogen forskel, når du eksplicit sætter den til det :-) Lad mig lige tænke over dette, mens jeg ta'r en smøg...
Avatar billede mekaniker Nybegynder
29. maj 2002 - 22:06 #16
På forhånd mange tak for hjælpen. Jeg har lige prøvet at se om jeg kan sætte den tilbage til engelsk, men er ikke helt sikker på hvordan jeg gør dette.
Avatar billede tmceu Praktikant
29. maj 2002 - 22:21 #17
Session.LCID = 2057 = british, 1033 = US

Prøv at se, hvad resultatet bliver med disse værdier. Jeg er løbet lidt tør for ideer. Men du siger, at du anvender formatet short date i din database. Så vidt jeg husker fra tidligere spørgsmål, anvender du Access, er det korrekt ?

Prøv evt. også at lave en response.write RS("Felt").Type, på et sted, hvor du har dit recordset åbent. Det vil være interessant at se, om du får 133,134 el. 135 som er normalt for et datofelt.
Avatar billede mekaniker Nybegynder
29. maj 2002 - 22:42 #18
Jeg har prøvet at lave en response.write RS("Felt").Type for feltet og får retuneret værdien 7
Avatar billede mekaniker Nybegynder
29. maj 2002 - 22:49 #19
Ja det er acces jeg bruger
Avatar billede tmceu Praktikant
29. maj 2002 - 23:49 #20
7 er ligmed adDate, så det er et gyldigt datoformat.

Jeg ville prøve at ændre formatet på feltet i databasen til YYYYMMDD, som er det universelle (læs: amerikanske) format. Det vil i næsten alle tilfælde virke. Hvis du så tilføjer Session.LCID = 1030, bør det altså virke :-)
Avatar billede mekaniker Nybegynder
04. juni 2002 - 13:55 #21
Jeg har stadig ikke fundet fejlen, men ellers tak for hjælpen.
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
Kategori
Kurser inden for grundlæggende programmering

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