Datum uit weeknummers

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# .NET Developer

Functie omschrijving Wij zijn op zoek naar een C# .NET Developer voor een leuke opdrachtgever in de omgeving van Hilversum! Voor een leuk bedrijf in de omgeving van Hilversum zijn wij op zoek naar een Back-end developer die klaar is voor een nieuwe uitdaging. Ben jij iemand die graag aan verschillende projecten werkt en het ook leuk vindt om bij klanten op bezoek te gaan? Dan ben jij de perfecte kandidaat! Deze functie is erg divers, je moet dus goed kunnen schakelen. Je komt te werken in een klein team van developers. Binnen het bedrijf hangt er een gemoedelijke informele

Bekijk vacature »

C# .NET Developer

Dit ga je doen Je richt je op het doorontwikkelen en herstructureren van het platform; Je werkt in teamverband en zelfstandig aan uitdagende projecten voor verschillende klanten; Softwareontwikkeling middels C# .NET; Je staat in contact met verschillende opdrachtgevers om de klantwensen te bespreken en deze vervolgens te ontwikkelen; Verbeteren van bedrijfsprocessen; Implementaties. Hier ga je werken Als .NET Developer kom je te werken in de regio van Lelystad bij een organisatie die met toonaangevende klanten uit heel Nederland samen werkt. De producten en diensten van de organisatie bereiken miljoenen Nederlanders. Hierbij komt een grote hoeveelheid informatie kijken en deze moet

Bekijk vacature »

PHP Developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Developer start jij in een team met 15 developers. In het team is er genoeg senioriteit om ervoor te zorgen dat jij de juiste begeleiding krijgt. Jij begint als eerst alle software pakketten en processen eigen te maken. Vervolgens ga jij deze software programmeren, onderhouden en testen. Ook ga jij research doen naar nieuwe mogelijkheden en zoek jij uit hoe je dit kan implementeren. Jullie werken intern op project basis en afhankelijk van het project werken jullie wel of niet iedere ochtend met een standup. Je gaat als Full stack developer aan de slag en gaat

Bekijk vacature »

Junior .NET developer

Functie Als junior .NET Core developer wordt jij onderdeel van ons team met drie breed ontwikkelde software engineers en een flexibele schil met zes ervaren freelancers. Jij gaat mee in de visie van onze organisatie om als IoT partner in deze branche specifieke markt “het” platform te blijven innoveren en deze ook steeds slimmer te maken. Wij hopen dan ook zeker dit in de toekomst te kunnen realiseren met bijvoorbeeld Artificial Intelligence. De architectuur van ons platform is opgemaakt uit een deel eigen protocol, een interface laag en een laag welke de protocollen van derde partijen vertaald naar het eigen

Bekijk vacature »

PHP Developer

Dit ga je doen Ontwikkelen, implementeren en testen van PHP-oplossingen en Apps voor klanten en bedrijfsprocessen; Opstellen van requirements en uitwerken van de oplossingen; Testen van software en borgen van een soepele overdracht, inclusief documentatie; Proactief adviseren vanuit eigen expertisegebied over ontwikkelingen en verbeterpunten in technische toepassingen en processen binnen de organisatie. Hier ga je werken De organisatie is een ambitieuze en vooruitstrevende speler in de markt in de regio Rotterdam. Ze zijn de snelst groeiende in hun branche. Met een excellent aanbod en service willen zij de beste keuze zijn voor hun bestaande en nieuwe klanten. Dit alles doen

Bekijk vacature »

Medior/senior Back-end developer gezocht!

Functie Vanwege de groei binnen het bedrijf zijn we op zoek naar versterking in het devlopmenttean. Als back-end developer bouw je aan de bedrijfssoftware die ons helpt bij de primaire processen. Een leuk (intern) project dus waarbij je de software continu doorontwikkeld! Je werkt in een klein team, we hebben dagelijks stand-ups en iedere twee weken een scrum-sessie, begeleid door onze Scrum Master. Hierin krijg je uitgebreid de kans om je ideeën te presenteren, en te overleggen met je mede-ontwikkelaars en de Product Owner. Binnen de ontwikkelteams gebruiken we Trello, Gitlab, Jiira, Confluence en Boockstack. Hiernaast werken ze met de

Bekijk vacature »

SQL Database developer

Functie omschrijving Wil jij meewerken aan het creëren van slimme software om magazijnen als een geoliede machine te laten lopen? Wij zoeken een zorgvuldig persoon, iemand die niet snel de hand omdraait voor complexe algoritmes. Denk jij dat jij de SQL ontwikkelaar bent die wij zoeken? Lees snel verder en wie weet zitten we binnenkort samen aan tafel! Jouw werkzaamheden zullen er als volgt uitzien: Je houdt je bezig met het ontwerpen en ontwikkelen van MS SQL server databases, dit doe je met T-SQL als programmeer laag. Je gaat aan high-end software oplossingen werken, dit doe je voor de optimalisatie

Bekijk vacature »

Back end developer PHP

Functie Met een complex en uitgebreid e-commerce platform, een eigen PIM-systeem en eigen scan applicatie – krijg jij dagelijks te zien hoe jouw werk gebruikt wordt door miljoenen gebruikers. En we staan qua development pas in de startblokken, aangezien er nog meerdere projecten op de plank liggen te wachten! Ons huidige development team bestaat uit 8 programmeurs. Er wordt dagelijks gereflecteerd op geschreven code, Scrum taken en kennisdelen onderling is een must. Onze voertaal binnen ons team is Engels, dit omdat wij twee internationale collega’s hebben. Ons huidige “IT Landschap” bestaat voornamelijk uit allerlei losse onderdelen die individueel, maar ook

Bekijk vacature »

Software ontwikkelaar

Ben jij graag bezig met verschillende projecten? Vind jij beleving van klanten én medewerkers ook belangrijk? Wij zijn vanwege de doorontwikkeling van het applicatielandschap van onze opdrachtgever op zoek naar een fulltime software ontwikkelaar. Omschrijving Jij en jouw collega’s zijn verantwoordelijk voor de continuïteit en waarborging van het applicatielandschap. Om de processen vloeiend te laten verlopen is software ontwikkeling daarom van essentieel belang. Onze opdrachtgever doet dit voornamelijk zelf, met door hun eigen ontwikkelde applicaties. Dit betekent dat jij: functionele eisen vertaalt naar gebruiksvriendelijke software; tijdens SCRUM sessies advies geeft over het te bouwen ontwerp; nieuwe software ontwikkelt en het

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Software Ontwikkelaar C# .NET

Functie omschrijving Startende Software Ontwikkelaar gezocht met kennis van C# .NET! Ben jij net klaar met je opleiding en ben je op zoek naar je eerste echte werkervaring? Of heb jij al enige werkervaring maar ben toe aan iets nieuws? Dan is dit de perfecte kans voor jou! Wij zoeken namelijk een Junior Software Ontwikkelaar die klaar is voor een nieuwe uitdaging bij een leuke werkgeven in de regio Zeist. In deze functie werk jij vaak aan verschillende projecten en ga je bij klanten op bezoek. Ben jij op zoek naar een functie met uitdaging, diversiteit en verantwoordelijkheid? Dan is

Bekijk vacature »

Lead javascript developer Node.js React

Functie Als fullstack JavaScript developer vind jij het uitdagend om op basis van concrete klantvragen nieuwe functionaliteiten te ontwikkelen. Bij voorkeur worden deze functionaliteiten op een bepaalde manier geprogrammeerd, zodat ze door meerdere klanten te gebruiken zijn. Je hebt dus vaak te maken met abstracte vraagstukken. Om dit te kunnen realiseren sta je nauw in contact met de product owner en/of klant. Je bent niet alleen onderdeel van het development team, maar hebt ook vaak contact met de product-owner en/of klanten om daardoor inzichten te verzamelen die leiden tot productverbeteringen. • Inzichten verzamelen bij de klant en/of product owner •

Bekijk vacature »

Medior/Senior Python developer

Functie Jij als Senior Python developer hebt al ruime ervaring opgedaan. Bedrijven komen bij de organisatie om technische vraagstukken op te lossen. Jij als specialist bent dus de representatie van deze kwaliteit. Je zult de keuze krijgen tussen lange of korte projecten waarin je komt te werken in multidisciplinaire teams. Projecten die je gaat uitvoeren zijn zeer uitlopend. Zodoende kun je aan de ene kant kiezen voor een greenfield project en stroom je bij een ander project midden in een migratietraject in. Voor de ene klant ontwikkel je ene nieuwe portal en voor het andere project duik je veel meer

Bekijk vacature »

.NET Developer

Functie omschrijving .NET developer met ervaring gezocht! Voor een softwarebedrijf in de regio Veenendaal zijn wij op zoek naar een .NET developer met een aantal jaar ervaring. Jij bent zowel zelfstandig als in teamverband verantwoordelijk voor het ontwikkelen en verbeteren van bestaande producten. Verder ben je bezig met nieuwbouw van websites, webapplicaties en mobiele applicaties die zowel intern als extern gebruikt worden. Je werkt hierbij nauw samen met andere developer, productmanagers en productspecialisten om zo mooie producten te creëren. Bedrijfsprofiel De organisatie waar je voor gaat werken is een snelgroeiende softwareleverancier en allround dienstverlener. Deze organisatie heeft zowel klanten die

Bekijk vacature »

Pagina: 1 2 3 volgende »

Niels Verkooijen

Niels Verkooijen

07/01/2006 10:31:00
Quote Anchor link
Hey allemaal, ik heb een script om de datum van de week, begin en eind datum te halen met het weeknummer. Alleen nu is het nieuwe jaar begonnen en is alles 1 dag opgeschoven. Kan iemand mij helpen ik zie de fout niet.

Het script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
function DatumVanWeek($iWeek, $iYear)
{

  // Get a random monday in the requested year
  $iMonday = mktime(0, 0, 0, 3, 1, $iYear);
  $iMonday = mktime(0, 0, 0, 3, 1-(date('w', $iMonday)-1), $iYear);
  // Get the date of week 1
  $iFirstWeek = mktime(0, 0, 0, 3, -7*(date('W', $iMonday)-1), $iYear);

  $date = mktime(0, 0, 0, date('m', $iFirstWeek), date('d', $iFirstWeek) + 7*($iWeek-1), date('Y', $iFirstWeek));

  $dag = date("d", $date) + 6;
  $laatste = mktime(0,0,0,date("m", $date),$dag,date('Y'));

  echo tijden($date, 'wedstrijden') . " - " . tijden($laatste, 'wedstrijden');
}

?>
 
PHP hulp

PHP hulp

16/11/2024 14:36:09
 
Mitch X

Mitch X

07/01/2006 10:39:00
Quote Anchor link
Je wilt van een week zien welke data daarin zitten?
Dus week 1 : 2-8 jan
week 2 : 9-15 jan
Zoiets?
 
Niels Verkooijen

Niels Verkooijen

07/01/2006 12:50:00
Quote Anchor link
Ja, sorry dat ik dat niet duidelijk heb vermeld. Maar dat bedoel ik ja :)
 
Willem vp

Willem vp

07/01/2006 16:40:00
Quote Anchor link
Ik vind het een beetje een schimmige manier om de datum van de eerste maandag uit te rekenen... Zo uit mijn hoofd zou ik zeggen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?
# Eerste dag van het jaar
$firstDay = date('w',mktime(0,0,0,1,1,$iYear));

# Voor de berekening moet zondag dag 7 zijn. Als je
# PHP 5.1.0 hebt, kun je ook date('N',$tmp) doen,
# dan is de volgende regel niet nodig.

if ($firstDay == 0) { $firstDay = 7; }

# Vind nu de 1e maandag van het jaar
$iFirstWeek = mktime(0,0,0,1,1 + ((8-$firstDay)%7),$year);
?>


En nu kun je verder met je $date = ...
 
Niels Verkooijen

Niels Verkooijen

08/01/2006 11:04:00
Quote Anchor link
Hey, ziet er goed uit alleen hoe kan ik het dan als ik een week nummer heb bijvoorbeeld van week 3 de datum's ophalen?
 
Willem vp

Willem vp

08/01/2006 15:13:00
Quote Anchor link
Kwestie van code bij elkaar stoppen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
function DatumVanWeek($iWeek, $iYear)
{

   # Eerste dag van het jaar
   $firstDay = date('w',mktime(0,0,0,1,1,$iYear));

   # Voor de berekening moet zondag dag 7 zijn. Als je
   # PHP 5.1.0 hebt, kun je ook date('N',$tmp) doen,
   # dan is de volgende regel niet nodig.

   if ($firstDay == 0) { $firstDay = 7; }

   # Vind nu de 1e maandag van het jaar
   $iFirstWeek = mktime(0,0,0,1,1 + ((8-$firstDay)%7),$year);

   $eerste = mktime(0, 0, 0, date('m', $iFirstWeek), date('d', $iFirstWeek) + 7*($iWeek-1), date('Y', $iFirstWeek));

   $laatste = mktime(0,0,0,date('m', $eerste),date('d', $eerste) + 6,date('Y',$eerste));

   echo 'Eerste: ' . date('r',$eerste) . ', laatste: ' . date('r',$laatste);
}


DatumVanWeek(35, 2006);
?>
 
- SanThe -

- SanThe -

08/01/2006 23:02:00
Quote Anchor link
Willem:
Kwestie van code bij elkaar stoppen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
function DatumVanWeek($iWeek, $iYear)
{

   # Eerste dag van het jaar
   $firstDay = date('w',mktime(0,0,0,1,1,$iYear));

   # Voor de berekening moet zondag dag 7 zijn. Als je
   # PHP 5.1.0 hebt, kun je ook date('N',$tmp) doen,
   # dan is de volgende regel niet nodig.

   if ($firstDay == 0) { $firstDay = 7; }

   # Vind nu de 1e maandag van het jaar
   $iFirstWeek = mktime(0,0,0,1,1 + ((8-$firstDay)%7),$year);

   $eerste = mktime(0, 0, 0, date('m', $iFirstWeek), date('d', $iFirstWeek) + 7*($iWeek-1), date('Y', $iFirstWeek));

   $laatste = mktime(0,0,0,date('m', $eerste),date('d', $eerste) + 6,date('Y',$eerste));

   echo 'Eerste: ' . date('r',$eerste) . ', laatste: ' . date('r',$laatste);
}


DatumVanWeek(35, 2006);
?>


Leuke code. Erg interessant. Ik ben daar ook al een hele tijd mee bezig geweest en ben er nog niet uit.

Er zit wel een klein typfoutje in:
$iFirstWeek = mktime(0,0,0,1,1 + ((8-$firstDay)%7),$year);
$year moet $iYear zijn.

Maar hoe mooi ik het ook vind, het is nog niet perfect. Als ik b.v. DatumVanWeek(1, 2002) doe krijg ik als antwoord maandag 7 jan 2002 en zondag 13 jan 2002. Maar die zitten beide in week 2 en niet in week 1. En dat is precies waar ik al zolang mee aan het kl**ien ben.

Denk jij dat je dit ook kan oplossen?
 
- SanThe -

- SanThe -

09/01/2006 01:37:00
Quote Anchor link
@Willem vp:

Ik hoop dat jij er geen bezwaar tegen hebt. Maar ik heb enkele aanpassingen aan je script verricht. Het is nu geheel correct. Het probleem uit mijn vorige post is opgelost.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php
function DatumVanWeek($iWeek, $iYear)
{

    # Ingevoerde weekwaarde onthouden
    $Check = $iWeek;
    
    # Eerste dag van het jaar
    $firstDay = date('w',mktime(0,0,0,1,1,$iYear));
    
    # Voor de berekening moet zondag dag 7 zijn. Als je
    # PHP 5.1.0 hebt, kun je ook date('N',$tmp) doen,
    # dan is de volgende regel niet nodig.

    if ($firstDay == 0) { $firstDay = 7; }
    
    # Vind nu de 1e maandag van het jaar
    $iFirstWeek = mktime(0,0,0,1,1 + ((8-$firstDay)%7), $iYear);
    
    # Als het niet week 1 is, zitten we in het jaar ervoor
    if (date("W", $iFirstWeek) != 1) { $iWeek--; }
    
    # Eerste dag van de week
    $eerste = mktime(0, 0, 0, date('m', $iFirstWeek), date('d', $iFirstWeek) + 7*($iWeek-1), date('Y', $iFirstWeek));
    
    # Laatste dag van de week
    $laatste = mktime(0,0,0,date('m', $eerste),date('d', $eerste) + 6,date('Y',$eerste));    

    # Checken of het in het goede jaar valt
    $lastDay = mktime(0,0,0,12,31,$iYear);
    $bool = true;
    $bool = ($bool AND (date("W", $eerste) == $Check OR $Check >= 2));
    $bool = ($bool AND (date("W", $lastDay) == $Check OR $Check <= 52));
    
    if ($bool)    
    {
echo 'Eerste: ' . date('r', $eerste) . '<br />Laatste: ' . date('r', $laatste) . '<br />';
    }
else { echo 'Het jaar ' . $iYear . ' heeft geen week ' . $Check . '.<br /><br />';
    }
}


DatumVanWeek(35, 2006);
?>


Edit: Compleet woord vergeten.
Gewijzigd op 09/01/2006 01:43:00 door - SanThe -
 
Willem Jan Z

Willem Jan Z

09/01/2006 02:02:00
Quote Anchor link
SanThe:
Edit: Compleet woord vergeten.


Altijd lastig :P
 
Jan Koehoorn

Jan Koehoorn

09/01/2006 09:00:00
Quote Anchor link
Leuk topic! Ik heb ook iets gemaakt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function dates_from_weeknr ($weeknr, $year, $format = '%d-%m-%Y') {
    if ($weeknr < 0 || $weeknr > 53) return false;
    $timestamp_1jan = strtotime ('1 january ' . $year);
    $timestamp_week = strtotime ('+' . $weeknr . ' week', $timestamp_1jan);
    $weekdag = strftime ('%u', $timestamp_week);
    $dagen_tot_begin_week = $weekdag - 1;
    $dagen_tot_eind_week = 7 - $weekdag;
    $begindatum = strtotime ("-" . $dagen_tot_begin_week . " days", $timestamp_week);
    $einddatum = strtotime ("+" . $dagen_tot_eind_week . " days", $timestamp_week);
    return array (strftime ($format, $begindatum), strftime ($format, $einddatum));        
}

?>


Uitleg:
1) de functie doet een minimale check op het weeknummer
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    if ($weeknr < 0 || $weeknr > 53) return false;
?>


2) dan pakt hij de timestamp van 1 januari van het bewuste jaar
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $timestamp_1jan
= strtotime ('1 january ' . $year);
?>


3) daarbij telt hij het gegeven aantal weken op en pakt die timestamp ook
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $timestamp_week
= strtotime ('+' . $weeknr . ' week', $timestamp_1jan);
?>


4) dan rekent hij de weekdag uit en timestamps van de eerste en de laatste dag van die week
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    $weekdag
= strftime ('%u', $timestamp_week);
    $dagen_tot_begin_week = $weekdag - 1;
    $dagen_tot_eind_week = 7 - $weekdag;
    $begindatum = strtotime ("-" . $dagen_tot_begin_week . " days", $timestamp_week);
    $einddatum = strtotime ("+" . $dagen_tot_eind_week . " days", $timestamp_week);
?>


5) De functie geeft een array terug met de eerste en de laatste dag van de week in
een formaat dat je zelf opgeeft. Als je niets meegeeft, gebruikt hij '%d-%m-%Y'.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    return array (strftime ($format, $begindatum), strftime ($format, $einddatum));        
?>


Voorbeelden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    print_r (dates_from_weeknr (1, 2006, '%d-%m'));
    print_r (dates_from_weeknr (1, 2006));
?>


edit: iets duidelijker op proberen te schrijven
Gewijzigd op 09/01/2006 10:01:00 door Jan Koehoorn
 
Jan Koehoorn

Jan Koehoorn

09/01/2006 09:31:00
Quote Anchor link
Ik bedenk me net dat het fout gaat als 1 januari op een maandag valt. Ga ik nog iets op verzinnen.
 
Lissy Pixel

Lissy Pixel

09/01/2006 09:41:00
Quote Anchor link
Grinnnnn zo leuk dat je dan zelf weer achter een foutje komt!! Echt heel mooi gedaan en voor beide CHAPEAU.
 
Jan Koehoorn

Jan Koehoorn

09/01/2006 09:59:00
Quote Anchor link
Hoi Lissy,

ja, ik doe:
$timestamp_week = strtotime ('+' . $weeknr . ' week', $timestamp_1jan);

Dus hij telt er altijd 1 week bij op, maar als 1 januari op een maandag valt is dat niet nodig.
 
Jan Koehoorn

Jan Koehoorn

09/01/2006 10:15:00
Quote Anchor link
Zo is ie beter:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
function dates_from_weeknr ($weeknr, $year, $format = '%d-%m-%Y') {
  if ($weeknr < 0 || $weeknr > 53) return false;
  $ts_1jan = strtotime ('1 january ' . $year);
  $ts_week = strtotime ('+' . $weeknr . ' week', $ts_1jan);
  $weekdag = strftime ('%u', $ts_week);
  if ($weekdag == '1') {
    $ts_week -= (24*3600*7);
  }

  $dagen_tot_begin_week = $weekdag - 1;
  $dagen_tot_eind_week = 7 - $weekdag;
  $begindatum = strtotime ("-" . $dagen_tot_begin_week . " days", $ts_week);
  $einddatum = strtotime ("+" . $dagen_tot_eind_week . " days", $ts_week);
  return array (strftime ($format, $begindatum), strftime ($format, $einddatum));    
}

?>
 
- SanThe -

- SanThe -

09/01/2006 10:53:00
Quote Anchor link
@Jan: Lekker korte code. Maar helaas, hij heeft dezelfde fout als die ik 2 posts geleden heb gemeld.
 
Jan Koehoorn

Jan Koehoorn

09/01/2006 11:12:00
Quote Anchor link
@ SanThe: ik heb even gekeken, maar 1 januari 2002 valt op een dinsdag. Ik ga er in mijn code vanuit dat de week met maandag begint en dat weeknummer 1 de eerste hele week is.

Bijvoorbeeld 2001 ligt 1 januari op een maandag. Die heb ik net getest, en dit gaat goed:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
function dates_from_weeknr ($weeknr, $year, $format = '%d-%m-%Y') {
  if ($weeknr < 0 || $weeknr > 53) return false;
  $timestamp_1jan = strtotime ('1 january ' . $year);
  $timestamp_week = strtotime ('+' . $weeknr . ' week', $timestamp_1jan);
  $weekdag = strftime ('%u', $timestamp_week);
  if ($weekdag == '1') $timestamp_week -= (7 * 24 * 3600);
  $dagen_tot_begin_week = $weekdag - 1;
  $dagen_tot_eind_week = 7 - $weekdag;
  $begindatum = strtotime ("-" . $dagen_tot_begin_week . " days", $timestamp_week);
  $einddatum = strtotime ("+" . $dagen_tot_eind_week . " days", $timestamp_week);
  return array (strftime ($format, $begindatum), strftime ($format, $einddatum));    
}


  echo '<pre>';
  print_r (dates_from_weeknr (1, 2006, '%d-%m'));
  print_r (dates_from_weeknr (1, 2006));
  print_r (dates_from_weeknr (1, 2001));
  echo '</pre>';
?>
 
Willem vp

Willem vp

09/01/2006 12:03:00
Quote Anchor link
Volgens ISO8601 is week1 de week waarin de eerste donderdag zit.
 
Jan Koehoorn

Jan Koehoorn

09/01/2006 12:14:00
Quote Anchor link
Dankje wel Willem, hahaha! Nu zitten we dus met vijf mogelijkheden:

Week 1 is de eerste volledige week die op ma begint
Week 1 is de eerste volledige week die op zo begint
Week 1 is de week waarin 1 jan voorkomt, begint op ma
Week 1 is de week waarin 1 jan voorkomt, begint op zo
Week 1 is de week met de eerste donderdag

Ik zal ff mijn functie aanpassen (NOT!)

LOL
 
- SanThe -

- SanThe -

09/01/2006 12:22:00
Quote Anchor link
Willem:
Volgens ISO8601 is week1 de week waarin de eerste donderdag zit.


Dit zal dan wel de oplossing zijn voor het grote puzzelstuk.
 
Jan Koehoorn

Jan Koehoorn

09/01/2006 13:57:00
Quote Anchor link
Het bloed kruipt toch waar het niet gaan kan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
// retourneert een array met de maandag en de zondag
// van een gegeven week en jaar volgens het ISO formaat

function ISOdates_from_weeknr ($weeknr, $year, $format = '%d-%m-%Y') {
  $start = strtotime ('1 january ' . $year);
  $week1 = strftime ('%V', $start);
  $weeknr--;
  while ($week1 != '01') {
    $start += (7 * 24 * 3600);
    $week1 = strftime ('%V', $start);
  }

  $timestamp_week = strtotime ('+' . $weeknr . ' week', $start);
  $weekdag = strftime ('%u', $timestamp_week);
  $dagen_tot_begin_week = $weekdag - 1;
  $dagen_tot_eind_week = 7 - $weekdag;
  $begindatum = strtotime ("-" . $dagen_tot_begin_week . " days", $timestamp_week);
  $einddatum = strtotime ("+" . $dagen_tot_eind_week . " days", $timestamp_week);
  $begindatum;
  return array (strftime ($format, $begindatum), strftime ($format, $einddatum));    
}

?>
 
- SanThe -

- SanThe -

09/01/2006 14:19:00
Quote Anchor link
Jan:
Het bloed kruipt toch waar het niet gaan kan:


Mooi, maar dat van mij dus ook.
Het script is een stuk verbeterd. Maar nog niet perfect. Als ik nu week 53 van 2002 opvraag, geeft jouw script 30-12-2002 en 05-01-2003 en mijn (nou ja) script geeft Het jaar 2002 heeft geen week 53. En dat klopt want wat jij geeft is week 1 van 2003.
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.