/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Nedtælling til dato
Fra : morten Hygum


Dato : 09-04-05 00:20

Jeg er ved at lave en nedtælling til en dato i asp,
Jeg vil have den til at begynde 10 dage før og så stoppe når
fødselsdagen er ovre.
Jeg har fået den til at vise det på dagen ved hjælp af denne:
If "6. marts" = DanskDato(Now) Then
Response.Write "<br>Ernst fylder " & Minus(,1947) & " år i dag"
End If

DanskDato er lavet ud fra
http://www.html.dk/tutorials/asp/lektion9.asp

Problemet er jo så at den faktisk bare sammenligner de tegn der
har de samme pladser i den string, som datoen jo er.
Min computer kører med et dansk tidsformat, hvorimod serveren
hjemmesiden ligger på, kører med et amerikansk.
Scriptet behøver ikke virke begge steder, men hvordan gør jeg?


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Lars Hoffmann (09-04-2005)
Kommentar
Fra : Lars Hoffmann


Dato : 09-04-05 13:21

morten Hygum wrote:
> Jeg er ved at lave en nedtælling til en dato i asp,
> Jeg vil have den til at begynde 10 dage før og så stoppe når
> fødselsdagen er ovre.
> Jeg har fået den til at vise det på dagen ved hjælp af denne:
> If "6. marts" = DanskDato(Now) Then
> Response.Write "<br>Ernst fylder " & Minus(,1947) & " år i dag"
> End If
>
> DanskDato er lavet ud fra
> http://www.html.dk/tutorials/asp/lektion9.asp
>
> Problemet er jo så at den faktisk bare sammenligner de tegn der
> har de samme pladser i den string, som datoen jo er.

Af (bitter) erfaring kan jeg fortælle dig at det altid er best at behandle
datoer som datoer (og ikke begynde at behandle dem som tekststrenge). Så
undgår man problemer med at forskellige serveropsætninger behandler datoerne
forskelligt.

Hvis jeg har forstået dig ret, vil du lave noget der viser hvor mange dage der
er til en bestemt dato, og i tilfælde af at det er idag, vil du vise hvor
mange år Ernst fylder.

Først smider vil lige Ernst+s fødselsdag ind i en variabel:

<%
dim foedselsdag
foedselsdag = DateSerial(1947, 4, 14)
%>


Nu er vi sikre på at datatypen er en dato og så er det hele meget nemmere. Lad
os lave en funktion der tæller ned til den 14. april 2005 (Ernsts fødselsdag)

<%
function dageTilFoedselsdag(foedselsdag)
   detteAarsFoedselsdag = dateSerial(year(date()), month(foedselsdag),
day(foedselsdag)) 'Pas på, denne linie er knækket.
   dageTilFoedselsdag = datediff("d",date(),detteAarsFoedselsdag)
end function
%>

Så skal vi til til sidst bare bruge vores funktion:

<%
dim dageTilFoedselsdag
dageTilFoedselsdag = udregnDageTilFoedselsdag(foedselsdag)
%>

Og så er resten bare at vise resultatet:

<%
if dageTilFoedselsdag > 0 then
   response.Write("Der er " & dageTilFoedselsdag & " dag(e) til Ernst's
fødselsdag") 'knækket linie
elseif dageTilFoedselsdag = 0 then
   response.write("Ernst bliver idag " & datediff("yyyy",foedselsdag,date()) & "
år gammel" )'knækket linie
else
   response.write("Nu er det for sent at købe gaver til Ernst" )
end if
%>


Hvis du endelig vil vise noget med en dansk tekst, kan du lave en unktion der
udskriver måneder eller dage på dansk, men husk at selv udregningen bør laves
med datatypen date.


Med venlig hilsen
Lars Hoffmann

Lars Hoffmann (09-04-2005)
Kommentar
Fra : Lars Hoffmann


Dato : 09-04-05 15:12

Lars Hoffmann wrote:

> function dageTilFoedselsdag(foedselsdag)
> detteAarsFoedselsdag = dateSerial(year(date()), month(foedselsdag),
> day(foedselsdag)) 'Pas på, denne linie er knækket.
> dageTilFoedselsdag = datediff("d",date(),detteAarsFoedselsdag)
> end function


Hov!
denne function skulle have heddet udregnDageTilFoedselsdag

morten Hygum (10-04-2005)
Kommentar
Fra : morten Hygum


Dato : 10-04-05 19:28

Lars Hoffmann wrote in dk.edb.internet.webdesign.serverside.asp:
> morten Hygum wrote:
> > Jeg er ved at lave en nedtælling til en dato i asp,
> > Jeg vil have den til at begynde 10 dage før og så stoppe når
> > fødselsdagen er ovre.
> > Jeg har fået den til at vise det på dagen ved hjælp af denne:
> > If "6. marts" = DanskDato(Now) Then
> > Response.Write "<br>Ernst fylder " & Minus(,1947) & " år i dag"
> > End If
> >
> > DanskDato er lavet ud fra
> > http://www.html.dk/tutorials/asp/lektion9.asp
> >
> > Problemet er jo så at den faktisk bare sammenligner de tegn der
> > har de samme pladser i den string, som datoen jo er.
>
> Af (bitter) erfaring kan jeg fortælle dig at det altid er best at behandle
> datoer som datoer (og ikke begynde at behandle dem som tekststrenge). Så
> undgår man problemer med at forskellige serveropsætninger behandler datoerne
> forskelligt.
>
> Hvis jeg har forstået dig ret, vil du lave noget der viser hvor mange dage der
> er til en bestemt dato, og i tilfælde af at det er idag, vil du vise hvor
> mange år Ernst fylder.
>
> Først smider vil lige Ernst+s fødselsdag ind i en variabel:
>
> <%
> dim foedselsdag
> foedselsdag = DateSerial(1947, 4, 14)
> %>
>
>
> Nu er vi sikre på at datatypen er en dato og så er det hele meget nemmere. Lad
> os lave en funktion der tæller ned til den 14. april 2005 (Ernsts fødselsdag)
>
> <%
> function dageTilFoedselsdag(foedselsdag)
>    detteAarsFoedselsdag = dateSerial(year(date()), month(foedselsdag),
> day(foedselsdag)) 'Pas på, denne linie er knækket.
>    dageTilFoedselsdag = datediff("d",date(),detteAarsFoedselsdag)
> end function
> %>
>
> Så skal vi til til sidst bare bruge vores funktion:
>
> <%
> dim dageTilFoedselsdag
> dageTilFoedselsdag = udregnDageTilFoedselsdag(foedselsdag)
> %>
>
> Og så er resten bare at vise resultatet:
>
> <%
> if dageTilFoedselsdag > 0 then
>    response.Write("Der er " & dageTilFoedselsdag & " dag(e) til Ernst's
> fødselsdag") 'knækket linie
> elseif dageTilFoedselsdag = 0 then
>    response.write("Ernst bliver idag " & datediff("yyyy",foedselsdag,date()) & "
> år gammel" )'knækket linie
> else
>    response.write("Nu er det for sent at købe gaver til Ernst" )
> end if
> %>
>
>
> Hvis du endelig vil vise noget med en dansk tekst, kan du lave en unktion der
> udskriver måneder eller dage på dansk, men husk at selv udregningen bør laves
> med datatypen date.
>
>
> Med venlig hilsen
> Lars Hoffmann

Mange tak. Det virker bare rigtigt godt. Det var dejligt at få det problem ud af
verden.
Det er ikke aktuelt lige nu, men hvad gør man, hvis der er en der har fødselsdag
1. januar og man stadig gerne vil se det ti dage før?

Med venlig hilsen
Morten Hygum

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Lars Hoffmann (10-04-2005)
Kommentar
Fra : Lars Hoffmann


Dato : 10-04-05 19:40


morten Hygum wrote:

> Mange tak. Det virker bare rigtigt godt. Det var dejligt at få det
problem ud af
> verden.
> Det er ikke aktuelt lige nu, men hvad gør man, hvis der er en der
har fødselsdag
> 1. januar og man stadig gerne vil se det ti dage før?


morten Hygum wrote:

> Det er ikke aktuelt lige nu, men hvad gør man, hvis der er en der
har fødselsdag
> 1. januar og man stadig gerne vil se det ti dage før?

Godt set!

Man kunne ændre scriptet lidt:

function udregnDageTilFoedselsdag(foedselsdag)
   detteAarsFoedselsdag = dateSerial(year(date()), month(foedselsdag),
day(foedselsdag)) ' knækket linie
   if datediff("d",date(),detteAarsFoedselsdag) < 0 then
      detteAarsFoedselsdag = dateSerial(year(date())+1, month(foedselsdag),
day(foedselsdag)) 'knækket linie
   end if
   udregnDageTilFoedselsdag = datediff("d",date(),detteAarsFoedselsdag)
end function

Så vil scriptet altid tælle frem til næste fødselsdag.


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste