Avatar billede celcius Nybegynder
03. maj 2004 - 07:03 Der er 7 kommentarer

Usanktioneret datokonversion

Jeg bruger midlertidigt en access database til at testkøre et system inden jeg får det lagt over i en MS SQL database.

Blandt de informationer jeg lagrer i databasen er der dato/tidsstempler i formatet: "DD-MM-YYYY 00:00". Det er også i dette format det kommer til at ligge i databasen, i et date field.

Så langt så godt. Når jeg nu forsøger at hive dato/tiden ud igen og f.eks. blot skriver det ud på skærmen ændrer vbscript det uden videre til formatet: "MM/DD/YYYY 00:00 AM". Både tid og dato ændres altså til amerikansk standard. Udover at dette selvfølgeligt er grimt, opstår der nogle helt andre praktiske problemer.

"28-05-2004 21:39" bliver til "5/28/2004 09:39 PM".
og
"03-05-2004 21:39" bliver til "3/5/2004 09:39 PM". <-- fejlkonvertering

Bemærk at dag/måned i det øverste eksempel står korrekt efter konverteringen, hvilket IKKE er tilfældet i det nederste eksempel. Der er væsentlig forskel på 3 maj 2004 og 5 marts 2004.

vbscript ændrer datoen til Amerikansk standard - og måned bliver til dag og omvendt når dagen i måneden er < 12 (og altså ikke kan være andet en dagen i dato/tidsstemplet).

Hvad kan jeg gøre for at få vbscript til at fortolke/konvertere datoen ud fra den korrekte dato/tidstype eller helt at undlade med at konvertere datoen? Jeg er fint tilfreds med datoen som den ligger i databasen - ASP'en skal bare lade være med at fortolke og konvertere den.
Avatar billede steen_hansen Forsker
03. maj 2004 - 07:47 #1
Der er vist noget galt med databasen, men når/hvis det kommer i orden, skal du prøve at kigge på http://www.eksperten.dk/spm/492410

Jeg havde selv problemet, da min host fik skiftet mellem engelsk/dansk datoformat. Så jeg gemmer det på en bestemt måde, og tvinger datoen ud på en bestemt måde.

Hvis ikke det kommer op at køre snarest, vil jeg gerne hjælpe dig igennem, men jeg håber det kommer til at køre inden længe.

I mellemtiden skal du nok have sat dette over <html> i dine dokumenter:

<%
Session.LCID = 1030
%>
Avatar billede retry Nybegynder
03. maj 2004 - 08:32 #2
Avatar billede celcius Nybegynder
03. maj 2004 - 08:56 #3
Jeg har smidt <%Session.LCID = 1030%> på mine sider og dato'er/tid vises som standard i danskformat nu...

Men hvis jeg gemmer 3/5/2004 i db'en bliver det efterfølgende skrevet som 5/3/2004 (dansk tidsformat) når jeg hiver det ud igen - og omvendt. Hver gang jeg henter en dato fra db'en bytter den rundt på dag/måned hvis den kan slippe afsted med det - selvom datoen i db'en er i dansk format, db-feltet er indstillet til dansk datoformat og siderne har <%Session.LCID = 1030%>. Det er ganske bizart!
Avatar billede steen_hansen Forsker
03. maj 2004 - 09:13 #4
Du skal dimensionere dato, måned, år, minutter og timer. Jeg vender tilbage med noget script ...
Avatar billede steen_hansen Forsker
03. maj 2004 - 09:15 #5
... og MS Access skal gemme i dansk/norsk.
Avatar billede steen_hansen Forsker
03. maj 2004 - 09:26 #6
Hvis du har lagt dato og tid korrekt ned, burde du kunne hive det korrekt ud:

<% tidspunkt = day(RS("tid")) & "-" & month(RS("tid")) & "-" & year(RS("tid")) & " " & hour(RS("tid")) & ":" & minute(RS("tid")) & ":" & second(RS("tid")) %>

<%=tidspunkt%>
Avatar billede steen_hansen Forsker
03. maj 2004 - 09:32 #7
Og dit dato recordset skal være tekst, ikke dato.
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