Avatar billede rille101 Nybegynder
13. september 2006 - 12:29 Der er 14 kommentarer og
1 løsning

Tidevandstabel i ASP

Hej
Jeg kunne godt tænke mig at vise højvande for de næste 5 dage på min hjemmeside.

Jeg har et udgangspunkt 13-09-2006 kl. 07:34
Hvor der har været højvande.

Jeg ved også at mellem hver højvande er der 12t 25min = 44770 sekunder.

Jeg er stadig i den spæde start med scriptet, hvor jeg er stødt i det første problem:

Hstart = date(13-09-2006 07:34)
Hnext = DateAdd("s", 44770, Hstart)
response.write(Hnext)

Dette giver følgende fejl:
Expected ')'
Hstart = date(13-09-2006 07:34)
-------------------------^

Så første pukkel der skal overvindes er altså, hvordan jeg fastsætter konstanten "13-09-2006 07:34" så ASP forstår det?

Point gives til den/dem der hjælper mig med at få lavet et fuldstændigt og virkende script.
Avatar billede hingebjerg Nybegynder
13. september 2006 - 12:34 #1
date() tager vist ikke tidspunktet med... prøv med Now()
Avatar billede fennec Nybegynder
13. september 2006 - 12:46 #2
Date har ikke nogen parametre. Du skal bruge cDate i stedet, til at konvertere til en dato/tid datatype:
Hstart = cdate("13-09-2006 07:34")
Avatar billede fennec Nybegynder
13. september 2006 - 12:48 #3
Men det er ikke strengt nødvendigt. Mange gange kører det fint uden cDate:
Hstart = "13-09-2006 07:34"
Hnext = DateAdd("s", 44770, Hstart)
Avatar billede plx Nybegynder
13. september 2006 - 12:49 #4
Hstart = #13-09-2006 07:34#

opretter en datovariabel
Avatar billede rille101 Nybegynder
13. september 2006 - 13:33 #5
Jep. De virker alle tre.
Jeg har valgt cdate("13-09-2006 07:34")
Så nu skriver den at næste højvande er 13-09-2006 kl 20:00, hvilket også stemmer.

Så må det næste jo være noget med:
X = (now() - Hstart) * 44770

næste højvande er:
Hstart + X

Kan det ikke passe?
Hvordan skriver man det således at man får et output som datoformat? jeg får bare et langt decimaltal med min opstilling:

              <%
Hstart = cdate("13-09-2006 07:34")

Hnext = DateAdd("s", 44770, Hstart)
X = (now()-Hstart)*44770
response.write(Hnext)%><br>
<%response.write(X)
            %>
Avatar billede fennec Nybegynder
13. september 2006 - 13:49 #6
Har lavet dette script. Burde virke til evig tid, så længe højvandet kommer hver 44770 sek:

tmp = datediff("s", cdate("13-09-2006 07:34"), now())
tmp = tmp mod 44770
Response.write dateadd("s",44770-tmp,now())
Avatar billede rille101 Nybegynder
13. september 2006 - 13:57 #7
Hmm. det jeg lige fik skrevet passer da vist ingen steder hen...

det man jo nok skal finde ud af er vel, hvor mange tidevandsperioder (44770 sek.)
Der er har været fra Hstart og så frem til now(), hvorefter man jo så kunne udregne ud fra det resultat.

Lørdag d.16/9 kl. 12 vil der være gået 6 tidevandsperioder.
<%
Hstart = cdate("13-09-2006 07:34")
X = Dateadd("s", 6*44770, Hstart)
response.write(X)
%>

6 skal således skiftes ud med en variabel.
Håber ikke at det hele bliver alt for forvirrende...
Avatar billede rille101 Nybegynder
13. september 2006 - 13:58 #8
OK fennec. Det prøver jeg lige hurtigt...
Avatar billede rille101 Nybegynder
18. september 2006 - 09:35 #9
Ja den virker fint.
Har lavet denne:
            <%
tmp = datediff("s", cdate("13-09-2006 07:34"), now())
tmp = tmp mod 44770
tide = dateadd("s",44770-tmp,now())
response.write (tide)
%>
<br>
<%
response.write dateadd("s",44770,tide)
%>
<br>
<%
response.write dateadd("s",2*44770,tide)
%>
<br>
<%
response.write dateadd("s",3*44770,tide)
%>

Så vises 4 højvande tidspunkter lige under hinanden.
Det ser dog lidt uoverskueligt ud for brugeren.
Kan man skrælle årstal og sekunder fra?
Avatar billede fennec Nybegynder
18. september 2006 - 09:49 #10
Du kan formatere det som du vil med day(), month(), year(), hour(), minute(), second() functionerne:
http://msdn.microsoft.com/library/en-us/script56/html/adaabd2b-250e-4040-9eaa-127f5a41f8b9.asp?frame=true

function formaterDato(fDate)
  formaterDato = day(fDate) &"/"& month(fDate) &" "& hour(fDate) &":"& minute(fDate)
end function

response.write formaterDato(now())
Avatar billede rille101 Nybegynder
18. september 2006 - 12:26 #11
Okay. Det har jeg nogenlunde hen.
Men ved klokkeslæt 01:07 skriver den 1:7
Hvordan tvinger jeg 01:07 igennem, samt ved datoer 18/09 i stedet for 18/9

Synes ikke rigtigt at kunne finde svaret på msdn (tak for linket iøvrigt. Det skal nok blive mig nyttigt i fremtiden.
Avatar billede fennec Nybegynder
18. september 2006 - 12:39 #12
Der skal du have en right ind over:
right("0"& minute(fDate), 2)
Avatar billede rille101 Nybegynder
21. september 2006 - 08:40 #13
Jeg har det næsten som det skal være nu.
Dog har jeg fundet ud af, at min tabel afviger lidt i forhold til de officielle tal fra farvandsvæsenet.
Jeg vil derfor gerne smide lidt waypoints ind, og efter dato så ændre min konstant.

waypoints:
25-12-2006 5:22
11-11-2007 3:15
15-11-2008 2:27

Hvis datoen så er f.eks. d. 16-11-2008 så skal
tmp = datediff("s", cdate("13-09-2006 07:34"), now())
ændres til
tmp = datediff("s", cdate("15-11-2008 02:27"), now())

Hvordan gør jeg det?
Avatar billede fennec Nybegynder
21. september 2006 - 08:55 #14
Det må bliver noget i denne stil:

wayPoint = "13-09-2006 07:34"
if datefiff("s","25-12-2006 05:22",now()) > 0 then wayPoint = "13-09-2006 07:34"
if datefiff("s","11-11-2007 03:15",now()) > 0 then wayPoint = "11-11-2007 03:15"
if datefiff("s","15-11-2008 02:27",now()) > 0 then wayPoint = "15-11-2008 02:27"
tmp = datediff("s", cdate(wayPoint), now())
tmp = tmp mod 44770
tide = dateadd("s",44770-tmp,now())
...
...
Avatar billede rille101 Nybegynder
21. september 2006 - 11:42 #15
Jeps. Så takker jeg mange gange for hjælpen.
Det virker flot!

Venlig hilsen
René

Her er så en online tidevandstabel.
Tidevandstabellen er lavet ud fra den gennemsnitlige periode mellem to højvande (12t 25min 45sek) med udgangspunkt i et givent tidspunkt, hvor der har været en officiel højvande 13-09-2006 7:27. Waypoints er så lagt ind fra farvandsvæsenets hjemmeside for at korrigere en smule...
Antallet af waypoints er frivilligt.
Min tabel viser høj/lavvande for Ballum ved Vadehavet.
www.ballumby.net

<table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td><p><span class="style20"><strong>Vandtider ved Ballum strand<br>
                  </strong>(De angivne tider er ca. tider)</span>
</p>
                  <form action="index3.asp" method="post" name="vandtider">                   
<input name="dato" type="text" id="dato" value="dd-mm-åååå">
                    <input type="submit" name="Send" value="Se vandtider">
</form>
                    <table width="300" border="1" cellpadding="0" cellspacing="0" bordercolor="#F0F0F0">
                      <tr>
                        <td bordercolor="#000000"><table width="330" height="200" border="0" cellpadding="0" cellspacing="2" bordercolor="#F0F0F0" background="../images/tidevandsskala.jpg">
                            <tr>
                              <td width="57" height="50" valign="bottom"><div align="left" class="style30"></div>
                                  <span class="style30">&nbsp; </span>
                                  <div align="center" class="style29 style30">
                                    <div align="left"><span class="style20 style30">
                                      <%
if request.form("Send")= "Se vandtider" then
waypointtarget = request.form("dato")
else
waypointtarget = now()
end if

wayPoint = "13-09-2006 07:27"
if datediff("s","13-09-2006 07:27",waypointtarget) > 0 then wayPoint = "13-09-2006 07:27"
if datediff("s","06-10-2006 02:33",waypointtarget) > 0 then wayPoint = "06-10-2006 02:33"
if datediff("s","18-10-2006 12:52",waypointtarget) > 0 then wayPoint = "18-10-2006 12:52"
if datediff("s","31-10-2006 19:52",waypointtarget) > 0 then wayPoint = "31-10-2006 19:52"
if datediff("s","22-11-2006 04:19",waypointtarget) > 0 then wayPoint = "22-11-2006 04:19"
if datediff("s","25-12-2006 06:27",waypointtarget) > 0 then wayPoint = "25-12-2006 06:27"
if datediff("s","05-03-2007 04:38",waypointtarget) > 0 then wayPoint = "05-03-2007 04:38"
if datediff("s","18-05-2007 04:16",waypointtarget) > 0 then wayPoint = "18-05-2007 04:16"
if datediff("s","20-07-2007 04:04",waypointtarget) > 0 then wayPoint = "20-07-2007 04:04"
if datediff("s","25-08-2007 12:41",waypointtarget) > 0 then wayPoint = "25-08-2007 12:41"
if datediff("s","30-09-2007 05:39",waypointtarget) > 0 then wayPoint = "30-09-2007 05:39"
if datediff("s","15-10-2007 05:32",waypointtarget) > 0 then wayPoint = "15-10-2007 05:32"
if datediff("s","11-11-2007 04:20",waypointtarget) > 0 then wayPoint = "11-11-2007 04:20"
if datediff("s","12-12-2007 04:55",waypointtarget) > 0 then wayPoint = "12-12-2007 04:55"
if datediff("s","15-02-2008 09:11",waypointtarget) > 0 then wayPoint = "15-02-2008 09:11"
if datediff("s","15-03-2008 08:59",waypointtarget) > 0 then wayPoint = "15-03-2008 08:59"
if datediff("s","15-05-2008 12:14",waypointtarget) > 0 then wayPoint = "15-05-2008 12:14"
if datediff("s","15-07-2008 13:32",waypointtarget) > 0 then wayPoint = "15-07-2008 13:32"
if datediff("s","15-09-2008 03:29",waypointtarget) > 0 then wayPoint = "15-09-2008 03:29"
if datediff("s","15-10-2008 03:37",waypointtarget) > 0 then wayPoint = "15-10-2008 03:37"
if datediff("s","15-11-2008 03:32",waypointtarget) > 0 then wayPoint = "15-11-2008 03:32"
if datediff("s","15-12-2008 05:03",waypointtarget) > 0 then wayPoint = "15-12-2008 05:03"

tmp = datediff("s", cdate(wayPoint), now())
tmp = tmp mod 44770
tide = dateadd("s",44770-tmp,now())
 
function formaterDato(fdate)
  formaterDato = right("0"& day(fdate), 2) &"/"& right("0"& month(fdate), 2) &"<br>"& right("0"& hour(fdate), 2) &":"& right("0"& minute(fdate), 2)
end function
function formaterDato2(fdate)
  formaterDato2 = right("0"& day(fdate), 2) &"/"& right("0"& month(fdate), 2) &" "& right("0"& hour(fdate), 2) &":"& right("0"& minute(fdate), 2)
end function
function formaterDato3(fdate)
  formaterDato3 = right("0"& hour(fdate), 2) &":"& right("0"& minute(fdate), 2)
end function

if request.form("Send")= "Se vandtider" then
tmp = datediff("s", cdate(waypoint), cdate(request.form("dato")))
tmp = tmp mod 44745
tide = dateadd("s",44745-tmp, cdate(request.form("dato")))
else
tmp = datediff("s", cdate(waypoint), now())
tmp = tmp mod 44745
tide = dateadd("s",44745-tmp, now())
end if

if datepart("ww", dateadd("s",-44745,tide)) >12 AND datepart("ww", dateadd("s",-44745,tide)) <44 then
response.write formaterDato(dateadd("s",-44745,tide))
else
response.write formaterDato(dateadd("s",-44745-3600,tide))
end if
%>
                                    </span></div>
                                  </div></td>
                              <td width="71" valign="bottom"><div align="center" class="style29 style30"><span class="style28">
                                  <%
if datepart("ww", dateadd("s",-44745,tide)) >12 AND datepart("ww", dateadd("s",-44745,tide)) <44 then
response.write (formaterDato(tide))
else
response.write (formaterDato(dateadd("s",-3600,tide)))
end if
%>
                              </span></div></td>
                              <td width="72" valign="bottom"><div align="center" class="style29 style30"><span class="style28">
                                  <%
if datepart("ww", dateadd("s",44745,tide)) >12 AND datepart("ww", dateadd("s",44745,tide)) <44 then
response.write formaterDato(dateadd("s",44745,tide))
else
response.write formaterDato(dateadd("s",44745-3600,tide))
end if
%>
                              </span></div></td>
                              <td width="73" valign="bottom"><div align="center" class="style29 style30"><span class="style28">
                                  <%
if datepart("ww", dateadd("s",44745+44745,tide)) >12 AND datepart("ww", dateadd("s",44745+44745,tide)) <44 then
response.write formaterDato(dateadd("s",44745+44745,tide))
else
response.write formaterDato(dateadd("s",44745+44745-3600,tide))
end if
%>
                              </span></div></td>
                              <td width="57" align="center" valign="bottom"><div align="right" class="style30"><span class="style37">
                                  <%
if datepart("ww", dateadd("s",3*44745,tide)) >12 AND datepart("ww", dateadd("s",3*44745,tide)) <44 then
response.write formaterDato(dateadd("s",3*44745,tide))
else
response.write formaterDato(dateadd("s",3*44745-3600,tide))
end if
%>
                              </span></div></td>
                            </tr>
                            <tr>
                              <td>&nbsp;</td>
                              <td>&nbsp;</td>
                              <td>&nbsp;</td>
                              <td>&nbsp;</td>
                              <td>&nbsp;</td>
                            </tr>
                            <tr>
                              <td colspan="5"><table width="88%" height="90%" border="0" cellpadding="0" cellspacing="0">
                                  <tr>
                                    <td width="6%" height="95">&nbsp;</td>
                                    <td width="26%" height="100%" valign="bottom"><div align="center" class="style30"><span class="style31">
<%if datepart("ww", dateadd("s",-22372.5,tide)) >12 AND datepart("ww", dateadd("s",-22372.5,tide)) <44 then
response.write formaterDato3(dateadd("s",-22372.5,tide))
else
response.write formaterDato3(dateadd("s",-22372.5-3600,tide))
end if
%>
                                    </span></div></td>
                                    <td width="25%" valign="bottom"><div align="center" class="style30">
<%if datepart("ww", dateadd("s",22372.5,tide)) >12 AND datepart("ww", dateadd("s",22372.5,tide)) <44 then
                                        response.write formaterDato3(dateadd("s",22372.5,tide))
                                        else
                                        response.write formaterDato3(dateadd("s",22372.5-3600,tide))
                                        end if
                                        %>
                                    </div></td>
                                    <td width="25%" valign="bottom"><div align="center" class="style30">                               
<%if datepart("ww", dateadd("s",(2*44745)+22372.5,tide)) >12 AND datepart("ww", dateadd("s",(2*44745)+22372.5,tide)) <44 then
                                        response.write formaterDato3(dateadd("s",44745+22372.5,tide))
                                        else
                                        response.write formaterDato3(dateadd("s",44745+22372.5-3600,tide))
                                        end if
                                        %>
                                    </div></td>
                                    <td width="18%" valign="bottom"><div align="right"><span class="style30">
                                    <%
if datepart("ww", dateadd("s",(3*44745)+44745,tide)) >12 AND datepart("ww", dateadd("s",(3*44745)+22372.5,tide)) <44 then
response.write formaterDato3(dateadd("s",(3*44745)+22372.5,tide))
else
response.write formaterDato3(dateadd("s",(3*44745)+22372.5-3600,tide))
end if
%>
                                    </span></div></td>
                                  </tr>
                              </table></td>
                            </tr>
                        </table></td>
                      </tr>
                    </table>                    </td>
                <td>&nbsp;</td>
                <td valign="bottom"><table width="100%" border="0" cellspacing="0" cellpadding="0">
                    <tr>
                      <td height="20"><strong>H&oslash;jvande de n&aelig;ste dage. </strong></td>
                    </tr>
                    <tr>
                      <td><table width="180" border="1" cellpadding="3" cellspacing="3" bordercolor="#031F51" bgcolor="#DFE5E8">
                        <tr>
                          <td width="50%"><div align="center"><span class="style20">
                            <%
if datepart("ww", dateadd("s",4*44745,tide)) >12 AND datepart("ww", dateadd("s",4*44745,tide)) <44 then
response.write formaterDato2(dateadd("s",4*44745,tide))
else
response.write formaterDato2(dateadd("s",4*44745-3600,tide))
end if
%>
                              <br>
                              <%
if datepart("ww", dateadd("s",5*44745,tide)) >12 AND datepart("ww", dateadd("s",5*44745,tide)) <44 then
response.write formaterDato2(dateadd("s",5*44745,tide))
else
response.write formaterDato2(dateadd("s",5*44745-3600,tide))
end if
%>
                          </span></div></td>
                          <td width="50%" height="50"><div align="center"><span class="style20">
                              <%
if datepart("ww", dateadd("s",6*44745,tide)) >12 AND datepart("ww", dateadd("s",6*44745,tide)) <44 then
response.write formaterDato2(dateadd("s",6*44745,tide))
else
response.write formaterDato2(dateadd("s",6*44745-3600,tide))
end if
%>
                              <br>
                              <%
if datepart("ww", dateadd("s",7*44745,tide)) >12 AND datepart("ww", dateadd("s",7*44745,tide)) <44 then
response.write formaterDato2(dateadd("s",7*44745,tide))
else
response.write formaterDato2(dateadd("s",7*44745-3600,tide))
end if
%>
                          </span></div></td>
                        </tr>
                        <tr>
                          <td width="50%"><div align="center"><span class="style20">
                              <%
if datepart("ww", dateadd("s",8*44745,tide)) >12 AND datepart("ww", dateadd("s",8*44745,tide)) <44 then
response.write formaterDato2(dateadd("s",8*44745,tide))
else
response.write formaterDato2(dateadd("s",8*44745-3600,tide))
end if
%>
                              <br>
                              <%
if datepart("ww", dateadd("s",9*44745,tide)) >12 AND datepart("ww", dateadd("s",9*44745,tide)) <44 then
response.write formaterDato2(dateadd("s",9*44745,tide))
else
response.write formaterDato2(dateadd("s",9*44745-3600,tide))
end if
%>
                          </span></div></td>
                          <td width="50%" height="50"><div align="center"><span class="style20">
                              <%
if datepart("ww", dateadd("s",10*44745,tide)) >12 AND datepart("ww", dateadd("s",10*44745,tide)) <44 then
response.write formaterDato2(dateadd("s",10*44745,tide))
else
response.write formaterDato2(dateadd("s",10*44745-3600,tide))
end if
%>
                              <br>
                              <%
if datepart("ww", dateadd("s",11*44745,tide)) >12 AND datepart("ww", dateadd("s",11*44745,tide)) <44 then
response.write formaterDato2(dateadd("s",11*44745,tide))
else
response.write formaterDato2(dateadd("s",11*44745-3600,tide))
end if
%>
                          </span></div></td>
                        </tr>
                        <tr>
                          <td width="50%"><div align="center"><span class="style20">
                              <%
if datepart("ww", dateadd("s",12*44745,tide)) >12 AND datepart("ww", dateadd("s",12*44745,tide)) <44 then
response.write formaterDato2(dateadd("s",12*44745,tide))
else
response.write formaterDato2(dateadd("s",12*44745-3600,tide))
end if
%>
                              <br>
                              <%
if datepart("ww", dateadd("s",13*44745,tide)) >12 AND datepart("ww", dateadd("s",13*44745,tide)) <44 then
response.write formaterDato2(dateadd("s",13*44745,tide))
else
response.write formaterDato2(dateadd("s",13*44745-3600,tide))
end if
%>
                          </span></div></td>
                          <td width="50%" height="50"><div align="center"><span class="style20">
                              <%
if datepart("ww", dateadd("s",14*44745,tide)) >12 AND datepart("ww", dateadd("s",14*44745,tide)) <44 then
response.write formaterDato2(dateadd("s",14*44745,tide))
else
response.write formaterDato2(dateadd("s",14*44745-3600,tide))
end if
%>
                              <br>
                              <%
if datepart("ww", dateadd("s",15*44745,tide)) >12 AND datepart("ww", dateadd("s",15*44745,tide)) <44 then
response.write formaterDato2(dateadd("s",15*44745,tide))
else
response.write formaterDato2(dateadd("s",15*44745-3600,tide))
end if
%>
                          </span></div></td>
                        </tr>
                      </table></td>
                    </tr>
                  </table>                  </td>
              </tr>
            </table>
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