Avatar billede meyer Nybegynder
13. april 1999 - 00:00 Der er 33 kommentarer og
1 løsning

dato-format

er der nogen der kan vende denne her:

'------------------------------------------------------------
    ' This function finds the last date of the given month
    '------------------------------------------------------------
    Function GetLastDay(intMonthNum, intYearNum)
        Dim dNextStart
        If CInt(intMonthNum) = 12 Then
            dNextStart = CDate( "1/1/" & intYearNum)
        Else
            dNextStart = CDate(intMonthNum + 1  & "/1/" & intYearNum)
        End If
        GetLastDay = Day(dNextStart - 1)
    End Function

Den kører us-datoformat: måned/dag/år, så når jeg kører på dansk viser den kun en dag i januar, 2 i februar osv. osv.

meyer
Avatar billede Dan Nim Seniormester
13. april 1999 - 16:41 #1
Jeg kan ikke lige hitte ud af det overstående script, men jeg har lige banket et script sammen som virker på præsic samme måde !

Her :


<%
md = Array("","31","28","31","30","31","30","31","31","30","31","30","31")
Dato =  mid(Date,4,2)
Response.write "Der er "& md(dato) & " dage i denne månede" 
%>


Det vil godt nok give et problem med hver 4 år, det kan jeg desvære ikke lige se hvordan jeg løse :(

Men jeg skal nok prøve !
Avatar billede jonaskvl Nybegynder
13. april 1999 - 17:16 #2
Ehm.. det man gør når man vil have den sidste dag i måneden er at tage den første i næste måned og trække én fra.. gøres sådan her ..

NewDate = DateAdd("d", -1, "1-Feb-99")
Returnere
1/31/1999

smart smart.. og følger selvfølgelig serverens ur så der ER taget forbehold for skudår..


Chatstuff: Skudår er hver 4. år men ikke hvert 100 år men så igen hvert 400 år.. :)

Avatar billede meyer Nybegynder
13. april 1999 - 17:20 #3
Ja, men den funktion jeg har er en del af en kalender, så jeg skulle gerne ha' vendt den om til dag/måned/år.

meyer
Avatar billede jonaskvl Nybegynder
13. april 1999 - 17:24 #4
det kan du gøre sådan her ..

day(now)/month(now)/year(now)
Avatar billede Dan Nim Seniormester
13. april 1999 - 17:27 #5
øøø. jeg er ikke med

Du skal bruge

altaldageimåneden/månedeiervi/åretviervi

f.eks.

31/4/1999


Har jeg forstët det rigtig ?
Avatar billede meyer Nybegynder
14. april 1999 - 08:55 #6
Nej det er en del af et større script, ved godt at det er lidt stort men sen nu her:

<!-- #include file ="dsn.asp" -->
<!-- #include file="adovbs.inc" -->
<%
    ' Name: ASP Calendar
    ' Author: Manohar Kamath
    ' Version: 1.0
    ' Copyright Manohar Kamath. Original calendar copyright Wrox Press
%>
<%
    '------------------------------------------------------------
    ' This function finds the last date of the given month
    '------------------------------------------------------------
    Function GetLastDay(intMonthNum, intYearNum)
        Dim dNextStart
        If CInt(intMonthNum) = 12 Then
            dNextStart = CDate( "1/1/" & intYearNum)
        Else
            dNextStart = CDate(intMonthNum + 1 & "/1/"  & intYearNum)
        End If
        GetLastDay = Day(dNextStart - 1)
    End Function
   
    '-------------------------------------------------------------------------
    ' This routine prints the individual table divisions for days of the month
    '-------------------------------------------------------------------------
    Sub Write_TD(sValue, sClass)
        Response.Write "        <TD ALIGN='RIGHT' WIDTH=20 HEIGHT=15 VALIGN='BOTTOM' CLASS='" & sClass & "'> " & sValue & "</TD>" & vbCrLf
    End Sub


    ' Constants for the days of the week
    Const cSUN = 1, cMON = 2, cTUE = 3, cWED = 4, cTHU = 5, cFRI = 6, cSAT = 7
   
    ' Get the name of this file
    sScript = Request.ServerVariables("SCRIPT_NAME")
   
    ' Check for valid month input
    If IsEmpty(Request("MONTH")) OR NOT IsNumeric(Request("MONTH")) Then
      datToday = Date()
      intThisMonth = Month(datToday)
    ElseIf CInt(Request("MONTH")) < 1 OR CInt(Request("MONTH")) > 12 Then
      datToday = Date()
      intThisMonth = Month(datToday)
    Else
      intThisMonth = CInt(Request("MONTH"))
    End If
   
    ' Check for valid year input
    If IsEmpty(Request("YEAR")) OR NOT IsNumeric(Request("YEAR")) Then
      datToday = Date()
      intThisYear = Year(datToday)
    Else
      intThisYear = CInt(Request("YEAR"))
    End If

    strMonthName = MonthName(intThisMonth)
    datFirstDay = DateSerial(intThisYear, intThisMonth, 1)
    intFirstWeekDay = WeekDay(datFirstDay, vbSunday)
    intLastDay = GetLastDay(intThisMonth, intThisYear)
   
    ' Get the previous month and year
    intPrevMonth = intThisMonth - 1
    If intPrevMonth = 0 Then
        intPrevMonth = 12
        intPrevYear = intThisYear - 1
    Else
        intPrevYear = intThisYear   
    End If
   
    ' Get the next month and year
    intNextMonth = intThisMonth + 1
    If intNextMonth > 12 Then
        intNextMonth = 1
        intNextYear = intThisYear + 1
    Else
        intNextYear = intThisYear
    End If

    ' Get the last day of previous month. Using this, find the sunday of
    ' last week of last month
    LastMonthDate = GetLastDay(intLastMonth, intPrevYear) - intFirstWeekDay + 2
    NextMonthDate = 1

    ' Initialize the print day to 1 
    intPrintDay = 1

    ' Open a record set of schedules
    Set Rs = Server.CreateObject("ADODB.RecordSet")
   
    ' These dates are used in the SQL
    dFirstDay = intThisMonth & "/1/" & intThisYear
    dLastDay     = intThisMonth & "/" & intLastDay & "/" & intThisYear

    sSQL =     "SELECT DISTINCT Start_Date, End_Date FROM tEvents WHERE " & _
                    "(Start_Date >=#" & dFirstDay & "# AND Start_Date <= #" & dLastDay & "#) " & _
                    "OR " & _
                    "(End_Date >=#" & dFirstDay & "# AND End_Date <= #" & dLastDay & "#) " & _
                    "OR " & _
                    "(Start_Date < #" & dFirstDay & "# AND End_Date > #" & dLastDay & "# )"  & _
                    "ORDER BY Start_Date"
    'Response.Write sSQL

    ' Open the RecordSet with a static cursor. This cursor provides bi-directional navigation
    Rs.Open sSQL, sDSN, adOpenStatic, adLockReadOnly, adCmdText
%>

<html>
<head>
<meta HTTP-EQUIV="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Schedule for <% = strMonthName & " " & intThisYear %></title>
<style TYPE="text/css">
  TD.NON {font-family :Tahoma, Verdana, Arial; font-size :12px; color :#C0C0C0; font-weight :normal;}
  TD.TOP {font-family :Tahoma, Verdana, Arial; font-size :12px; color :#0000FF; font-weight :bold;}
  TD.Some {font-family :Tahoma, Verdana, Arial; font-size :12px; color :#000000; font-weight :normal;}

  A.NOEVENT:Link {font-family :Tahoma, Verdana, Arial; font-size :12px; color :#000000; font-weight :normal; text-decoration: none;}
  A.NOEVENT:Visited {font-family :Tahoma, Verdana, Arial; font-size :12px; color :#000000; font-weight :normal; text-decoration: none;}

  A.EVENT:Link {font-family :Tahoma, Verdana, Arial; font-size :12px; color :#000000; font-weight :bold; text-decoration: none;}
  A.EVENT:Visited {font-family :Tahoma, Verdana, Arial; font-size :12px; color :#000000; font-weight :bold; text-decoration: none;}

  A.NORMAL:Link {font-family :Verdana, Arial; font-size :12px; color :#0000FF; font-weight :normal; text-decoration: none;}
  A.NORMAL:Visited {font-family :Verdana, Arial; font-size :12px; color :#0000FF; font-weight :normal; text-decoration: none;}
</style>
</head>
<body BGCOLOR="#CCCCFF" TEXT="#0000FF" LEFTMARGIN="3" LINK="#000000" VLINK="#000000">
<br>

<table ALIGN="CENTER" BORDER="1" CELLSPACING="0" CELLPADDING="2" BGCOLOR="White" BORDERCOLOR="Gray">
<tr><td>
    <table WIDTH="140" BORDER="0" CELLPADDING="1" CELLSPACING="0" BGCOLOR="#FFFFFF">
        <tr HEIGHT="18" BGCOLOR="Silver">
            <td WIDTH="20" HEIGHT="18" ALIGN="LEFT" VALIGN="MIDDLE"><a HREF="<% =sScript%>?month=<% =IntPrevMonth %>&amp;year=<% =IntPrevYear %>"><img SRC="images/prev.gif" WIDTH="10" HEIGHT="18" BORDER="0" ALT="Previous Month"></a></td>
            <td WIDTH="120" COLSPAN="5" ALIGN="CENTER" VALIGN="MIDDLE" CLASS="SOME"><% = strMonthName & " " & intThisYear %></td>
            <td WIDTH="20" HEIGHT="18" ALIGN="RIGHT" VALIGN="MIDDLE"><a HREF="<% =sScript %>?month=<% =IntNextMonth %>&amp;year=<% =IntNextYear %>"><img SRC="images/next.gif" WIDTH="10" HEIGHT="18" BORDER="0" ALT="Next Month"></a></td>
        </tr>
      <tr>
            <td ALIGN="RIGHT" CLASS="SOME" WIDTH="20" HEIGHT="15" VALIGN="BOTTOM">S</td>
            <td ALIGN="RIGHT" CLASS="SOME" WIDTH="20" HEIGHT="15" VALIGN="BOTTOM">M</td>
            <td ALIGN="RIGHT" CLASS="SOME" WIDTH="20" HEIGHT="15" VALIGN="BOTTOM">T</td>
            <td ALIGN="RIGHT" CLASS="SOME" WIDTH="20" HEIGHT="15" VALIGN="BOTTOM">W</td>
            <td ALIGN="RIGHT" CLASS="SOME" WIDTH="20" HEIGHT="15" VALIGN="BOTTOM">T</td>
            <td ALIGN="RIGHT" CLASS="SOME" WIDTH="20" HEIGHT="15" VALIGN="BOTTOM">F</td>
            <td ALIGN="RIGHT" CLASS="SOME" WIDTH="20" HEIGHT="15" VALIGN="BOTTOM">S</td>
      </tr>
      <tr><td HEIGHT="1" ALIGN="MIDDLE" COLSPAN="7"><img SRC="images/line.gif" HEIGHT="1" WIDTH="140" BORDER="0"></td></tr>
      <%
            ' Initialize the end of rows flag to false
            EndRows = False
            Response.Write vbCrLf
           
            ' Loop until all the rows are exhausted
            Do While EndRows = False
                ' Start a table row
                Response.Write "    <TR>" & vbCrLf
                ' This is the loop for the days in the week
                For intLoopDay = cSUN To cSAT
                    ' If the first day is not sunday then print the last days of previous month in grayed font
                    If intFirstWeekDay > cSUN Then
                        Write_TD LastMonthDate, "NON"
                        LastMonthDate = LastMonthDate + 1
                        intFirstWeekDay = intFirstWeekDay - 1
                    ' The month starts on a sunday   
                    Else
                        ' If the dates for the month are exhausted, start printing next month's dates
                        ' in grayed font
                        If intPrintDay > intLastDay Then
                            Write_TD NextMonthDate, "NON"
                            NextMonthDate = NextMonthDate + 1
                            EndRows = True
                        Else
                            ' If last day of the month, flag the end of the row
                            If intPrintDay = intLastDay Then
                                EndRows = True
                            End If
                           
                            dToday = CDate(intPrintDay & "/" & intThisMonth & "/" & intThisYear) 
                            If NOT Rs.EOF Then
                                ' Set events flag to false. This means the day has no event in it
                                bEvents = False
                              Do While NOT Rs.EOF AND bEvents = False
                                    ' If the date falls within the range of dates in the recordset, then
                                    ' the day has an event. Make the events flag True
                                If dToday >= Rs("Start_Date") AND dToday <= Rs("End_Date") Then
                                        ' Print the date in a highlighted font
                                  Write_TD "<A HREF=events.asp?date="& Server.URLEncode(dToday) & " CLASS='EVENT' TARGET='rightframe'> " & intPrintDay & "</A>", "HL"
                                        bEvents = True
                                    ' If the Start date is greater than the date itself, there is no point
                                    ' checking other records. Exit the loop   
                                ElseIf dToday < Rs("Start_Date") Then
                                        Exit Do
                                    ' Move to the next record
                                    Else   
                                    Rs.MoveNext
                                    End If
                              Loop
                                ' Checks for that day
                                Rs.MoveFirst
                            End If
                           
                            ' If the event flag is not raise for that day, print it in a plain font
                            If bEvents = False Then
                                Write_TD "<A HREF=events.asp?date="& Server.URLEncode(dToday) & " CLASS='NOEVENT' TARGET='rightframe'> " & intPrintDay & "</A>", "SOME"
                            End If
                        End If
                       
                        ' Increment the date. Done once in the loop.
                        intPrintDay = intPrintDay + 1
                    End If
               
                ' Move to the next day in the week
                Next
                Response.Write "    </TR>" & vbCrLf
               
            Loop
            Rs.Close
            Set Rs = Nothing
        %>
    </table>
    </td></tr>
</table>
<p><a HREF="http://www.kamath.com" TARGET="_top"><img SRC="images/aspcalendar_but.gif" BORDER="0" WIDTH="125" HEIGHT="45"></a></p>

<!-- #include file="form.inc" -->
</body>
</html>


Når den optegner kalenderen er den helt gal!!

meyer
Avatar billede jonaskvl Nybegynder
14. april 1999 - 08:57 #7
Har du kigget nøjere på koden og har fundet ud af hvad der er galt eller vil du bare gerne have at nogen laver den ?
Avatar billede meyer Nybegynder
14. april 1999 - 09:03 #8
jeg kan ikke finde fejlen, så ja please HELP!!

meyer
Avatar billede meyer Nybegynder
14. april 1999 - 09:04 #9
PS. Det der "må" være galt er at den som sagt er skrevet til engelsk datoformat og jo så vender om på dag og måned!!

meyer
Avatar billede jonaskvl Nybegynder
14. april 1999 - 09:13 #10
de der filer du inkludere .. hvad er <!-- #include file ="dsn.asp" --> ?
Avatar billede meyer Nybegynder
14. april 1999 - 09:16 #11
Link til databasen!
Avatar billede meyer Nybegynder
14. april 1999 - 09:18 #12
Avatar billede jonaskvl Nybegynder
14. april 1999 - 09:18 #13
<!-- #include file="form.inc" -->
Hvad er det ..


nu er det jo sådan at jeg ikke engang kan teste dit script.. da du bruger en database jeg ikke har liggende
Avatar billede alfar Nybegynder
14. april 1999 - 15:03 #14
Her er mit forslag til en funktion... den skulle virke ligemeget hvilket sprog din server har:

<%
    Function DaysInMonth(vMonth, vYear)
        DaysInMonth = 32 - Day(DateSerial(vYear, vMonth, 32))
    End Function
%>
Avatar billede jonaskvl Nybegynder
14. april 1999 - 15:27 #15
Aah meget smart.. så vil jeg så tage mig en frihed at prøve at forklarer hvad der sker..

DateSerial(1999, 4, 32) returnerer

5/2/99

når man så sætter day() omkring får man selfølgelig: 2

det trækker man så fra 32 og får 30, og der er så 30 dage i denne måned :)
Avatar billede meyer Nybegynder
14. april 1999 - 15:43 #16
??

Har du hentet kalenderscriptet??

meyer
Avatar billede alfar Nybegynder
14. april 1999 - 16:16 #17
Jeg har ikke hentet noget, nej...
Avatar billede jonaskvl Nybegynder
14. april 1999 - 16:28 #18
Meyer: hvis det ikke er løsningen så tror jeg der hersker tvivl om hvad dit problem egentlig er
Avatar billede meyer Nybegynder
14. april 1999 - 16:35 #19
jonaskvl.

Har du hentet det script jeg henviste til tidligere??

meyer
Avatar billede alfar Nybegynder
14. april 1999 - 17:19 #20
Hvis du bare skal have det vendt om (som du skriver i dit spørgsmål øverst)
er det ikke det store problem... ret

<%
    Function GetLastDay(intMonthNum, intYearNum)
        Dim dNextStart
        If CInt(intMonthNum) = 12 Then
            dNextStart = CDate( "1/1/" & intYearNum)
        Else
            dNextStart = CDate(intMonthNum + 1 & "/1/" & intYearNum)
        End If
        GetLastDay = Day(dNextStart - 1)
    End Function
%>

til

<%
    Function GetLastDay(intMonthNum, intYearNum)
        Dim dNextStart
        If CInt(intMonthNum) = 12 Then
            dNextStart = CDate( "1/1/" & intYearNum)
        Else
            dNextStart = CDate("1/" & intMonthNum + 1 & "/" & intYearNum)
        End If
        GetLastDay = Day(dNextStart - 1)
    End Function
%>

Jeg HAR downloadet scriptet, og det har ikke rigtig hjulpet mig videre angående hvad dit problem er. Du skal bruge en funktion, der giver dig antallet af dage i en bestemt måned? Det har jeg givet dig ovenfor...

/Alfen
Avatar billede meyer Nybegynder
14. april 1999 - 17:27 #21
Jeg har nok ikke forklaret mig godt nok, det er det her script det handler om ,det skal køre dansk dato format.

Har du ingen probs med det??

meyer
Avatar billede alfar Nybegynder
14. april 1999 - 18:24 #22
Efter at have lavet den rettelse jeg nævnte i mit sidste svar, har jeg ikke nogen problemer med systemet...

/&#124;&#124;lfen
Avatar billede meyer Nybegynder
14. april 1999 - 19:09 #23
fedt nok, hvordan indsætter jeg det?

meyer :o)
Avatar billede alfar Nybegynder
14. april 1999 - 19:16 #24
Find den linje i filen, hvor der står

            dNextStart = CDate(intMonthNum + 1 & "/1/" & intYearNum)

(Det er linje 18 i calendar_v1.asp)
og ret den til

            dNextStart = CDate("1/" & intMonthNum + 1 & "/" & intYearNum)

Hvor svært kan det være? :o)

/Alfen
Avatar billede meyer Nybegynder
14. april 1999 - 19:34 #25
Flot, flot, men prøv nu at oprette en aktivitet på en eller anden dato og skriv så din startdato dag-måned-år.

Det gør den helt fint, men når du så trykker på den dag du "mener" du har indskrevet den er der ikke noget! Der læser den også omvendt altså måned-dag, har du nogen løsning på det??

Jeg vil gerne oprette et nyt sprøgsmål til 200 point hvis du bare gider hjælpe mig :-)

meyer
Avatar billede meyer Nybegynder
14. april 1999 - 19:35 #26
FLOVT, nu har jeg set at du har svaret 2 gange på det samme :-(

meyer :-)
Avatar billede meyer Nybegynder
14. april 1999 - 19:43 #27
Man kan vende den nede under tabeloptegnelsen ved at ændre til:

' If last day of the month, flag the end of the row
        If intPrintDay = intLastDay Then
        EndRows = True
        End If
        dToday = CDate(intPrintDay & "/" & intThisMonth & "/" & intThisYear) 
        If NOT Rs.EOF Then

Så viser den da den dag man klikker på, men ikke aktiviteten.

meyer
Avatar billede alfar Nybegynder
14. april 1999 - 19:44 #28
Hæhæ... Tjaeh...
Det nemmeste ville nok være at finde alle steder, hvor det er et problem, og skifte strenge som

month & "/" & day & "/" & year

ud med

DateSerial(Year, Month, Day)

- det skulle faktisk være nok... Bortset fra at det er et hestearbejde. :o)

Alfen
Avatar billede meyer Nybegynder
14. april 1999 - 19:51 #29
ja, men det jeg ikke forstår er at når den sender til event.asp har den den rigtige dato med f.eks. "event.asp?date=01-04-99, men den viser ikke aktiviteten, aktiviteten den ligger under 4 januar..:-(

meyer
Avatar billede alfar Nybegynder
14. april 1999 - 20:05 #30
ahh... det er fordi SQL ALTID bruger engelsk dato-format... Lidt trælsk, når man nu liige havde fået den til at opføre sig ordentligt.
Du må rette

Linje 25 i event.asp til

                "WHERE Start_Date <= " & CLng(dDate) & " AND End_Date >= " & CLng(dDate) & " ORDER BY Event_ID "


Alle steder hvor man bruger variable af typen Date i SQL-sætninger, er det smarteste faktisk at lave dem om til Long og SÅ sætte dem ind. (Uden ## når du bruger long)

/Alfen
Avatar billede meyer Nybegynder
14. april 1999 - 21:41 #31
Du er genial!!! Tusind tak!

Tjek www. falsternet.dk - er der noget der du kan bruge ja, så sig bare til og det er på vej til dig :-)

meyer
Avatar billede alfar Nybegynder
14. april 1999 - 22:47 #32
LOL! Det siger du sikkert til alle fyre, du møder... *G*
Jeg foretrækker at lave min egen kode fra bunden, men ellers tak for tilbuddet.
Du må jo se om du kan vinde nogle point tilbage, hvis jeg skulle finde på et spidsfindigt spørgsmål her til forummet... :o)

/Alfen
Avatar billede oscar Nybegynder
16. maj 1999 - 18:35 #33
Hej alfar & meyer.

Jeg mangler lige lidt i at få min calender til at virke..

Er der en af jer der gider vise mug hvad jeg mangler..

Jeg har lavet d første 2 rettelser men blev tabt da jeg kom til at ændre SQL sætninger..

Håber i gider .....
Avatar billede quercus Nybegynder
07. juni 2001 - 02:19 #34
alfar og meyer må meget gerne se på http://www.eksperten.dk/spm/79395

alfar fordi du er for genial og meyer fordi du jo fik det til at virke :)

oscar kan vel også være med...
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