Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [OPGELOST] Weeknummer op webpagina  (gelezen 5061 keer)

[OPGELOST] Weeknummer op webpagina
« Gepost op: 2011/12/17, 20:47:21 »
Kan er iemand mij aan een manier helpen om "het weeknummer" zichtbaar te maken op een html-pagina ?
Bijkomende hic is dat week 1 die van 1 september zou moeten zijn...
Liefst ook iets dat voor alle komende jaren nog werkt...
« Laatst bewerkt op: 2011/12/23, 16:54:26 door Prosper »
Omwille van de besparingen hebben ze het licht aan het eind van de tunnel ook uitgedaan...

Offline commandoline

  • LoCo-contact
    • marten-de-vries
    • Marten-de-Vries.nl
Re: Weeknummer op webpagina
« Reactie #1 Gepost op: 2011/12/17, 21:57:59 »
Daarvoor ga je javascript of anders een server side taal nodig hebben (PHP bijv.).

Aangezien je wilt dat September de eerste week is, kan je maar tot op zekere hoogte standaardfuncties (zoals strftime("%W")) gebruiken. Het wordt dus wat handmatig programmeerwerk.


Offline Joshua822

  • Lid
Re: Weeknummer op webpagina
« Reactie #3 Gepost op: 2011/12/18, 01:07:53 »
Ik heb het volgende geschreven voor je:
var huidige_datum = new Date ( );
var een_september;
var week_in_milliseconden = 1000 * 60 * 60 * 24 * 7;
var verschil_in_weken;
   
if ( huidige_datum.getMonth ( ) < 8 )
{
   
    een_september = new Date ( ( huidige_datum.getFullYear ( ) -1 ), 8, 1 );

}
else
{
   
    een_september = new Date ( ( huidige_datum.getFullYear ( ) ), 8, 1 );

}       
     
verschil_in_weken = Math.ceil ( ( huidige_datum.getTime ( ) - een_september.getTime ( ) ) / week_in_milliseconden );

document.write ( "Weken sinds 1 september: " + verschil_in_weken );

Als je niet weet hoe je de uitvoer hiervan nu zoals je wenst in je document krijgt, zeg het dan even en geef ons het relevante stuk van het document zodat wij de code helemaal goed kunnen noteren voor je! ;)


Re: Weeknummer op webpagina
« Reactie #4 Gepost op: 2011/12/18, 12:25:27 »
Nog wel de opmerking dat de week moet beginnen op maandag, dus volgens de ISO-standaard, niet op zijn 'rikaans.
Omdat ik er verder jammer genoeg geen flauw benul van heb hoe ik dat nu in een html-document zet, vind je hieronder de relevante secties van het html-document. Als je dat wil testen, verwijder je best ook de verwijzingen naar het style-sheet en de achtergrond.
Bij mij werkt dat nog normaal (er staan een twintigtal hard gecodeerde linkjes in het volledige document). Overigens is het de bedoeling dat ik die code nadien nog transporteer naar onze elektronische leeromgeving, maar daarin mag html gebruikt worden. Ben wel niet zeker van die javascript, maar dat zie ik dan wel.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<title>Startpagina</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="opmaak2.css"></head>
<body>
<p>&nbsp;
</p>
<table border="0">
<tbody>
<tr>
<td align="center" height="50" width="210">
<a href="http://forum.ubuntu-nl.org/unread/" title="http://forum.ubuntu-nl.org/" target="_self">Ubuntu Forum NL</a></td>
</tr>
</tbody></table>
</body></html>
Omwille van de besparingen hebben ze het licht aan het eind van de tunnel ook uitgedaan...

Offline Joshua822

  • Lid
Re: Weeknummer op webpagina
« Reactie #5 Gepost op: 2011/12/18, 16:34:18 »
Ik heb het scriptje aan je wens aangepast. Plaats het volgende in je <head>-element:
<script type="text/javascript">
function weken_sinds_een_september ( )
{
    var huidige_datum = new Date ( );
    var begin_eerste_week;
    var week_in_milliseconden = 1000 * 60 * 60 * 24 * 7;
    var verschil_in_weken;
   
    if ( huidige_datum.getMonth ( ) < 8 )
    {
   
        begin_eerste_week = new Date ( ( huidige_datum.getFullYear ( ) -1 ), 8, 1 );

    }
    else
    {
   
        begin_eerste_week = new Date ( ( huidige_datum.getFullYear ( ) ), 8, 1 );

    }       
   
    if ( begin_eerste_week.getDay() != 1 )
    {
        begin_eerste_week.setDate ( 31 - ( begin_eerste_week.getDay ( ) - 1 ) );
        begin_eerste_week.setMonth ( 7 );
    }
   
    verschil_in_weken = Math.ceil ( ( huidige_datum.getTime ( ) - begin_eerste_week.getTime ( ) ) / week_in_milliseconden );

    return verschil_in_weken;
}
</script>

En ik veronderstel dat je het aantal weken wilt laten weergeven in een paragraaf. Dus voeg onderaan je body-element ( of waar je het ook op de pagina wilt laten weergeven de volgende code toe:
<p id="aantal_weken_sinds_een_september"></p>
<script type="text/javascript">
document.getElementById ( "aantal_weken_sinds_een_september" ).innerHTML += weken_sinds_een_september ( );
</script>

Ik heb het wel allemaal niet goed kunnen testen, omdat ik midden in de examens zit. Sorry daarvoor, maar ik hoop dat ik je toch al in de juiste richting heb geholpen.

Re: Weeknummer op webpagina
« Reactie #6 Gepost op: 2011/12/18, 19:06:21 »
Technisch werkt dit perfect, dank !

Maar er is één hik: ik krijg als resultaat vandaag (zondag 18 december): week 17, terwijl dit 16 zou moeten zijn: 1 september 2011 viel in de 35ste ISO-week en vandaag is de laatste dag van de 50ste week.

Vooraleer ik alle magie verder ga onderzoeken wacht ik eerst even op morgen... XD
Omwille van de besparingen hebben ze het licht aan het eind van de tunnel ook uitgedaan...

Offline Joshua822

  • Lid
Re: Weeknummer op webpagina
« Reactie #7 Gepost op: 2011/12/18, 22:26:57 »
Misschien kun je mijn eerste script proberen? Die geeft wel als resultaat week 16. Maar ik zal mijn best doen om je morgen het juiste scriptje te geven ;)

Re: Weeknummer op webpagina
« Reactie #8 Gepost op: 2011/12/19, 18:11:50 »
Ja, dat vorige scriptje geeft vandaag 16, maar ondertussen is dit wel al de 17de week...

Maar het presseert niet, hoor, denk vooral eerst maar aan je examens !
Omwille van de besparingen hebben ze het licht aan het eind van de tunnel ook uitgedaan...

Offline Joshua822

  • Lid
Re: Weeknummer op webpagina
« Reactie #9 Gepost op: 2011/12/22, 00:57:43 »
Oké, dit script werkt wel perfect. Het enige probleem is dat het bij mij niet in Firefox werkt, maar wel in andere browsers. Dat moet je eens nakijken, want volgens mij licht het echt aan mijn Firefox-installatie. Maar hier is hetgene wat je in je head-element moet plaatsen:
       <script type="text/javascript">
            function weken_sinds_een_september ( )
            {
                /* Eerste_datum is de maandag voor 1 september ( als 1 september niet op een maandag valt )
                tweede_datum is de huidige datum, die ook afgerond zal worden naar de voorgaande maandag. */
                var eerste_datum;
                var tweede_datum = new Date ( );
   
                /* Deze variabele stelt een week in milliseconden voor, zodat we straks makkelijk
                   het verschil tussen de twee datums kunnen berekenen. */
                var week_in_milliseconden = 1000 * 60 * 60 * 24 * 7;
   
                /* Deze variabele stelt het uiteindelijke berekende verschil in weken voor */
                var verschil_in_weken;
   
                /* Nu stellen we eerste_datum gelijk aan september. Dit kan alleen correct gebeuren als we
                   de huidige maand kennen ( omdat anders een september in de toekomst valt ), daarom
                   initialiseren we deze variabele nu pas. */
                if ( tweede_datum.getMonth ( ) >= 8 )
                {
                    /* Deze datum wordt nog naar de vorige maandag afgerond */
                    eerste_datum = new Date ( tweede_datum.getYear ( ), 8, 1 );
                }
                else
                {
                    /* Deze datum wordt nog naar de vorige maandag afgerond */
                    eerste_datum = new Date ( ( tweede_datum.getYear ( ) - 1 ), 8, 1 );
                }
   
                /* Nu gaan we de eerste datum, die nu 1 september bevat, afronden naar de vorige
                   maandag. */
                if ( eerste_datum.getDay ( ) != 1 )
                {
                    eerste_datum.setDate ( eerste_datum.getDate ( ) - ( eerste_datum.getDay ( ) - 1 ) );
                }
   
                /* Dit doen we nu idem met tweede_datum. */
                if ( tweede_datum.getDay ( ) != 1 )
                {
                    tweede_datum.setDate ( tweede_datum.getDate ( ) - ( tweede_datum.getDay ( ) - 1 ) );
                }
   
                /* Deze regel berekent het verschil tussen de twee datums. */
                verschil_in_weken = Math.ceil ( ( tweede_datum.getTime ( ) - eerste_datum.getTime ( ) ) / week_in_milliseconden );
   
                return verschil_in_weken;
            }

Het snippertje code in het body-element werkt met deze nieuwe code normaal gezien ook gewoon goed.

Ik hoop dat het perfect voor je werkt, anders zeg je het maar, hè! ;)

Re: Weeknummer op webpagina
« Reactie #10 Gepost op: 2011/12/22, 20:53:51 »
Ik krijg 99154...
In FF 8.0
Omwille van de besparingen hebben ze het licht aan het eind van de tunnel ook uitgedaan...

Offline Joshua822

  • Lid
Re: Weeknummer op webpagina
« Reactie #11 Gepost op: 2011/12/22, 22:26:16 »
Dit is inderdaad raar, in andere browsers gebeurt dit namelijk niet. Dit is dus een quirk van Firefox, maar daar weet ik niet zoveel over.

Re: Weeknummer op webpagina
« Reactie #12 Gepost op: 2011/12/22, 22:28:39 »
Zal het morgen eens testen op een paar andere browsers...
'k Laat wel iets weten.
Omwille van de besparingen hebben ze het licht aan het eind van de tunnel ook uitgedaan...

Offline Joshua822

  • Lid
Re: Weeknummer op webpagina
« Reactie #13 Gepost op: 2011/12/22, 22:36:52 »
Ik zal het eens op een forum voorleggen waar mensen er meer verstand van hebben, ik zal ook zo snel mogelijk iets laten weten. ;)

Offline Joshua822

  • Lid
Re: Weeknummer op webpagina
« Reactie #14 Gepost op: 2011/12/23, 11:01:32 »
Och ja, ik weet al waarom. Ik heb op W3Schools gekeken en de methode getYear() van het date-object is deprecated ( dat komt ervan als je op school met Internet Explorer moet werken  :rolleyes: )

<script type="text/javascript">
function weken_sinds_een_september ( )
{
    var huidige_datum = new Date ( );
    var begin_eerste_week;
    var week_in_milliseconden = 1000 * 60 * 60 * 24 * 7;
    var verschil_in_weken;
   
    if ( huidige_datum.getMonth ( ) < 8 )
    {
   
        begin_eerste_week = new Date ( ( huidige_datum.getFullYear ( ) -1 ), 8, 1 );

    }
    else
    {
   
        begin_eerste_week = new Date ( ( huidige_datum.getFullYear ( ) ), 8, 1 );

    }       
   
    if ( begin_eerste_week.getDay() != 1 )
    {
        begin_eerste_week.setDate ( 31 - ( begin_eerste_week.getDay ( ) - 1 ) );
        begin_eerste_week.setMonth ( 7 );
    }
   
    verschil_in_weken = Math.ceil ( ( huidige_datum.getTime ( ) - begin_eerste_week.getTime ( ) ) / week_in_milliseconden );

    return verschil_in_weken;
}
</script>

Dit zal werken, ik heb het getest. ;)

Re: Weeknummer op webpagina
« Reactie #15 Gepost op: 2011/12/23, 16:54:05 »
Klopt !
Deze geeft mooi 17 aan. Nu nog even afwachten wat het doet op zondag, want het mag pas maandag naar 18 gaan...

Je bent in elk geval hartstikke
Omwille van de besparingen hebben ze het licht aan het eind van de tunnel ook uitgedaan...