Avatar billede kaptajnkemo Nybegynder
24. juni 2002 - 23:26 Der er 26 kommentarer og
3 løsninger

Dansk datoformat tak :)

Jeg har følgende script som insisterer på at skrive dato som f.eks. "Mon Jun 24 00:00:00 UTC+0200 2002". Det skal vises som 24-06-2002 i stedet. Hvad går galt?

<% @LANGUAGE = JavaScript %>
<% Session.lcid=1030 %>
<!-- #include file="dbase.inc" -->

<%

if (Session("login") != "ok"){
      Session("login") = false;
      Response.Redirect("/admin/login.asp");
  }


connection = Server.CreateObject("ADODB.Connection");
connection.Open(dbaseConnect);

ledig = Request.form("ledig");
start = Request.form("start");
slut = Request.form("slut");
holdNr = Request.form("holdNr");
id = Request.form("id");

parseInt(ledig); // ledig laves til datatypen int af hensyn til db
dato = new Date();

sql_kald1 = "UPDATE hold SET pladserLedig ="+ledig +", holdstart ='"+start+"', holdslut ='"+slut+"', Opdateret = date() WHERE id = " + id +"";
connection.execute(sql_kald1);
// , Opdateret ="+dato+"

connection.Close();
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Hold opdateret</title>
<link rel="stylesheet" href="../_public/style.css" type="text/css">
</head>
<body>

Holdet er opdateret<br><br>
Du har gemt følgende ændringer:<br><br>
Hold nr. <%Response.Write(" "+holdNr);%>
Hold start. <%Response.Write(" "+start);%>
Hold slut <%Response.Write(" "+slut);%>
Ledige pladser <%Response.Write(" "+ledig);%>
Opdateret d.<%Response.Write(" "+dato)%><br><br>

<a href="holdstart.asp">Tryk for at komme tilbage</a>
</body>
</html>
Avatar billede illisher Praktikant
24. juni 2002 - 23:37 #1
prøv med nogle flere point
Avatar billede kaptajnkemo Nybegynder
24. juni 2002 - 23:43 #2
kan du hjælpe eller ej?
Avatar billede wilweb Nybegynder
24. juni 2002 - 23:45 #3
Du starter med at:
<% @LANGUAGE = JavaScript %>
men er:
<% Session.lcid=1030 %>
ikke et VBscript ting?
Avatar billede wilweb Nybegynder
24. juni 2002 - 23:49 #4
Prøv med:

<%
Session.LCID = 1030
%>

det virker for mig!
Avatar billede kaptajnkemo Nybegynder
25. juni 2002 - 00:00 #5
Det virker ikke.... desværre :(

har du andre forslag gizom?
Avatar billede wilweb Nybegynder
25. juni 2002 - 00:11 #6
Nej jeg er lidt kold på javascript, men i VBscript virker dette her:

<%@LANGUAGE="VBSCRIPT"%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<%
Session.LCID = 1030
%>
</body>
</html>
Avatar billede wilweb Nybegynder
25. juni 2002 - 00:21 #7
hvad med at du eventuelt lægger linjen ud i en global.asa fil, hvis du har mulighed for det.

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Session_OnStart
    Session.LCID = 1030
End Sub
</SCRIPT>
Avatar billede kimiwan Nybegynder
25. juni 2002 - 00:23 #8
her har du en funktion i JScript, som virker...

<%@LANGUAGE="JScript"%>
<%
Session.lcid=1030
function formatDate(d){
    if (d.getDate().toString().length==1){dato="0"+d.getDate();}else{dato=d.getDate();}
    if (d.getMonth().toString().length==1){maaned="0"+d.getMonth();}else{maaned=d.getMonth();}
    return dato+"-"+maaned+"-"+d.getFullYear();
}
dato = formatDate(new Date());
Response.Write(dato)
%>
Avatar billede kaptajnkemo Nybegynder
25. juni 2002 - 00:25 #9
Det er lidt skummelt, for i dette script virker det fint nok med dansk dato.

<% @LANGUAGE = JavaScript %>
<!-- #include file="dbase.inc" -->

<!-- Dansk format mht datoer-->
<% Session.LCID = 1030 %>

<%
connection = Server.CreateObject("ADODB.Connection");
connection.Open(dbaseConnect);


input = Request.form("tekst");

sqlKaldIndryk = "insert into testdb(test, dato) VALUES('"+ input +"', date())";


connection.execute(sqlKaldIndryk);

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
</head>
<body>

der er indsat følgende:<br>
<%
sqlKaldIndryk = "select * from testdb";
res = connection.execute(sqlKaldIndryk);

%>

<table>
<%
  while (!res.EOF)
    {
    %>
      <tr>
      <td><%Response.Write(res("test"));%></td>
      <td><%Response.write(res("dato")); %></td>
      </tr>
      <%res.MoveNext();%>
<%    } %>
</table>

<%connection.close();%>
</body>
</html>

Hvad er forskellen?
Hvorfor virker det i det ene og ikke i det andet??
Avatar billede kimiwan Nybegynder
25. juni 2002 - 00:27 #10
Sorry, den her skulle virke (glemte at tilføje en ekstra måned i den forrige)

<%@LANGUAGE="JScript"%>
<%
Session.lcid=1030
function formatDate(d){
    if (d.getDate().toString().length==1){dato="0"+d.getDate();}else{dato=d.getDate();}
    if (parseInt(d.getMonth()+1).toString().length==1){maaned="0"+parseInt(d.getMonth()+1);}else{maaned=parseInt(d.getMonth()+1);}
    return dato+"-"+maaned+"-"+d.getFullYear();
}
dato = formatDate(new Date());
Response.Write(dato)
%>
Avatar billede kimiwan Nybegynder
25. juni 2002 - 00:28 #11
Forskellen på de to er at du i den første (den der ikke virker) laver datoen med JScript - i den anden udskriver du blot en værdi fra databasen.
Avatar billede kaptajnkemo Nybegynder
25. juni 2002 - 00:33 #12
kimiwan:> Din funktion virker helt sikkert hvis man bare skal bruge dags dato og ellers er ligeglad. Min jeg skal også gemme start- og slutdato for et hold, og kan ikke bruge den funktion.

Det skal kunne lade sig gøre uden sådan en "snyde-funktion". Se evt. mit indlæg fra 25/06-2002 00:25:18.
Avatar billede kaptajnkemo Nybegynder
25. juni 2002 - 00:35 #13
kimiwan :> det er kun opdateret dato som bliver lavet med Jscript, resten er noget brugeren taster ind (der er ialt 3 datofelter).
Avatar billede kimiwan Nybegynder
25. juni 2002 - 00:39 #14
kaptajnkemo: du kan da også gøre det med den funktion - du skal bare angive en anden dato, når du kalder formatDate() funktionen!

Jeg ved ikke, hvordan brugeren indtaster start- og slut-dato - hvis han nu f.eks. skriver "fjerde august totusindeogto", tror jeg næppe der er meget at gøre.. Hvordan sikrer du dig, han skriver datoen ind på en måde, så du forstår det??
Avatar billede kaptajnkemo Nybegynder
25. juni 2002 - 00:46 #15
Kimiwan:> men pointen er at det kun kurrerer symptomerne... Jeg har stadig et forkert format i min db. Altså skal jeg kalde din funktion hver gang jeg vil vise en dato fra db og 3 gange for hver post. Det bliver til en hel del.
Avatar billede tmceu Praktikant
25. juni 2002 - 00:52 #16
Den eneste umiddelbare forskel på dine eksempler er, rækkefølgen af Session.LCID og din includefil. I den der virker, inkluderer du dbase.inc først og sætter derefter Session.LCID. I det eksempel der ikke virker, er det omvendt. Du ændrer vel ikke tilfældigvis Session.LCID i din includefil ?

LCID er i øvrigt en property på et ASP objekt, Session og det er derfor fuldstændig ligegyldigt om der anvendes VBScript el. JavaScript.

Kører de 2 eksempler på samme server ? Det format du får ud af at ændre Session.LCID er stadig afhængig af den server der kører på.
Avatar billede kaptajnkemo Nybegynder
25. juni 2002 - 01:10 #17
tmceu:> oplagt mulighed, men nej :(

1. Det er samme server de kører fra.
2. Det hjælper ikke at bytte rundt på include og LCID.
3. Min include fil ændrer ikke på CLID
Avatar billede tmceu Praktikant
25. juni 2002 - 01:28 #18
Prøv lige at lave en response.write(dato.toLocalDateString());
Avatar billede kaptajnkemo Nybegynder
25. juni 2002 - 01:43 #19
tmceu:>

Microsoft JScript runtime error '800a01b6'

Object doesn't support this property or method

/admin/opdaterHoldstart.asp, line 48
Avatar billede tmceu Praktikant
25. juni 2002 - 01:52 #20
Så har du ikke JScript 5.5 på serveren.

Du kan se en versions oversigt her: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/js56jsoriversioninformation.asp
Avatar billede kaptajnkemo Nybegynder
25. juni 2002 - 02:12 #21
tmceu:> ok, men det er jo tilsyneladende ligegyldigt. Det andet script virker jo :)

Hvad kan jeg gøre?
Avatar billede tmceu Praktikant
25. juni 2002 - 02:24 #22
<snip>ok, men det er jo tilsyneladende ligegyldigt. Det andet script virker jo</snip>

- ja, men her kommer værdien fra et recordset. Problemet er som kimiwan var inde på, at i det script der ikke virker, er datoen et "lokalt" date objekt i JScript. Denne anvender standard UTC format og er hamrende ligeglad med hvad din server står til og hvad du i øvrigt prøver at gøre med Locale Identifier koden.

toLocalDateString er en metode, der netop anvender maskinens regionale indstillinger og ikke UTC formatet.

Hvis du ikke kan/vil opdatere til en nyere version af JScript og ikke vil anvende den work-around funktion der er foreslået, vil jeg mene at du ikke kan gøre noget som helst.
Avatar billede sn0wflake Nybegynder
25. juni 2002 - 08:52 #23
Det er en dårlig ide at blande JScript og ASP (selv om det er e1ite og c00l :)
Avatar billede tmceu Praktikant
25. juni 2002 - 10:52 #24
sn0wflake >> det var dog en noget malplaceret kommentar. ASP er ikke lig VBScript.
Avatar billede kaptajnkemo Nybegynder
25. juni 2002 - 11:06 #25
tmceu:> Ikke forstået. På den side hvor man indtaster dato, bliver dato hentet fra db, og er altså ikke et Jscript objekt. Men der er datoen også i engelsk format, uanset hvad jeg gør.

Kan du give en lidt grundigere forklaring på hvorfor den ene er utc format, når den anden ikke er?
Avatar billede tmceu Praktikant
25. juni 2002 - 13:27 #26
Skrev du ikke at den ene virkede (den med databasen) ?

I den med databasen, udskriver du blot værdien og dermed er den styret af den værdi/formattering der findes i databasen, overstyret af Session.LCID. Denne værdi bliver aldrig nogensinde til et JScript objekt og er derfor ikke underlagt date objektet.
Avatar billede kaptajnkemo Nybegynder
25. juni 2002 - 17:14 #27
tmceu :> Ok måske formulerede jeg mig ikke helt klart. Det jeg mener er at der er to scripts som kører på hver deres database (som er identiske, og kører på samme server). Det ene script virker, det gør det andet ikke.

I begge scripts er der datoer som gemmes i databasen, men på den ene (den som ikke virker)er der mulighed for at opdatere en allerede gemt dato. På den side hvor man kan se datoen, og rette i den hvis man har lyst, bliver dato hentet fra db og vist i engelsk format.
Avatar billede kaptajnkemo Nybegynder
26. juni 2002 - 08:58 #28
Nu har jeg oprettet en helt ny database magen til den gamle, og pludselig virker skidtet???

Jeg takker for jeres indsats, selvom det ikke førte til en løsning.

tmceu:> smid lige et svar, så du også kan få del i points...
Avatar billede tmceu Praktikant
26. juni 2002 - 09:10 #29
OK :-)
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