Datum uit weeknummers

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# .NET Developer IoT SQL Server

Samengevat: Wij ontwikkelen innovatieve oplossingen om apparaten en bezittingen op een eenvoudige en flexibele manier te beveiligen. Ben jij een C# .NET developer? Heb jij ervaring met C# en SQL server? Vaste baan: C# .NET Developer IoT HBO €3.200 - €4.500 Deze werkgever is gespecialiseerd in hoogwaardige GSM/GPRS alarm- en telemetrietechnologie. Met een eigen productlijn en klantspecifieke ontwikkelingen biedt deze werkgever oplossingen om op afstand te meten, melden, loggen en aansturen, ook op plaatsen zonder stroomvoorziening. Onze producten worden gekarakteriseerd door flexibiliteit in de configuratie, betrouwbaarheid en een extreem laag stroomverbruik. Zij werken voor MKB klanten. Deze werkgever heeft veel

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun

Bekijk vacature »

Java developer

Als Java Developer bij Sogeti ben je onderdeel van onze toonaangevende community die bestaat uit ruim 100 gepassioneerde Java professionals. In teamverband lever je mooie prestaties. Daarmee draag je aan bij de meerwaarde die wij leveren aan onze top-opdrachtgevers. Geen werkdag is hetzelfde! Je bent voortdurend bezig met het oplossen van allerlei complexe vraagstukken binnen bedrijfs kritische systemen voor onze klanten in regio Noordoost zoals DUO, ING, CJIB en Tendernet. Natuurlijk krijg jij de mogelijkheid je verder te certificeren in dit vakgebied. We organiseren regelmatig technische Meetups en doen veel aan kennisdeling. Sogetisten hebben plezier in hun werk en staan

Bekijk vacature »

Software developer

Werkzaamheden voor jou als software developer Voor een goede relatie in de regio Zwolle (meerdere locaties) zoeken wij een software developer die betrokken is bij de ontwikkelcyclus en verantwoordelijk is voor het testen en keuren van nieuwe en geoptimaliseerde software. In deze functie ben je in de implementatiefase de persoon die risico's beoordeelt en intern oplossingen aanbrengt om risico's te verkleinen. Binnen het ontwikkelteam van de software ben je een belangrijke schakel waar je intensief meewerkt met scrum. Het voorkomen van bugs in de programma's en het bevorderen van gebruiksvriendelijkheid voor eindklanten zijn voor jou een uitdaging en geeft voldoening

Bekijk vacature »

Senior Cobol Applicatieontwikkelaar

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving In de applicatie ETM

Bekijk vacature »

Junior Software developer

Functie Als junior .NET ontwikkelaar start jij in een compact team met drie ervaren .NET ontwikkelaars. Wij werken op projectbasis en begeleiden zelf het hele traject van A tot Z. Wij bieden jou dan ook een brede functie aan met veel technische uitdaging! Ons traject ziet er als volgt uit: 1) Wij analyseren de behoefte van onze klant 2) Wij werken de behoefte uit en vertalen dit naar technische werkzaamheden en maken een uren/kosten schatting; 3) Wij gaan aan de slag met het ontwikkelen van het product met directe feedback van de klant, zodat datgene gerealiseerd wordt, wat gewenst is;

Bekijk vacature »

Web Application Developer

Dit ga je doen Samen met het team werk je aan de visualisatie functionaliteiten en hoe dit gebruikt kan worden in een operationele setting; Het ontwerpen, ontwikkelen, onderhouden en leveren van support betreft het Warehouse Management Systeem en de bijbehorende web visualisaties; Je gebruikt hierbijde tools WebGL en ASP.net; Het meewerken in implementatieprojecten; Het leveren van Go-Live Support; Sparren met jouw Amerikaanse collega's. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Web Application Developer. Ze zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van

Bekijk vacature »

Softwareontwikkelaar Cleopatra

Functieomschrijving Voor de gemeente Amsterdam zijn wij op zoek naar een softwareontwikkelaar Cleopatra. De directie Verkeer en Openbare ruimte van de gemeente Amsterdam beschikt over een softwareapplicatie, "Cleopatra", waarmee geautomatiseerde handhaving plaatsvindt (op basis van kentekenherkenning) van bepaalde gebieden waarin toegangseisen worden gesteld aan het verkeer. Voorbeelden ervan zijn de milieuzones, de zone zwaar verkeer, handhaving van brom- en snorfietser op het fietspad en autoluwe gebieden. Voor de doorontwikkeling en uitbreiding ervan zijn gespecialiseerde softwareontwikkelaars nodig die helpen bij het programmeren van de handhavingsmodules voor nieuwe gebieden en het verbeteren en bijwerken van de bestaande onderdelen van de softwareapplicatie. Functie

Bekijk vacature »

Lead C++ Developer

De rol van Lead C++ Developer Als Lead C++ developer bij KUBUS word je verantwoordelijk voor het implementatie design van requirements en de software architectuur van de desktop applicaties van BIMcollab, ons platform voor 3D model-validatie en issue-management bedoeld om de kwaliteit van 3D design-modellen voor gebouwen te verbeteren. Betere 3D modellen leiden tot betere gebouwen, dus zo draag je bij aan verduurzaming van de gebouwde omgeving met slimmer gebruik van materialen, minder verspilling en energie-efficiënte gebouwen. Een goede gebruikerservaring staat bij ons hoog in het vaandel; we gaan in onze ontwikkeling voor innovatie en kwaliteit. In je rol als

Bekijk vacature »

Remote - Front-end Angular developer

Functie The IT team currently consists of the IT Manager, 2 back-end developers, 1 full-stack developer, 1 designer, and a DevOps engineer. They are currently looking for an experienced Front-end developer who will work autonomously and in a disciplined manner, being the only developer working on their Front-end applications at the start. They do have the ambition to find a second developer soon, who you will then be able to supervise. You will be working on the further development of their existing UI in Angular. But also developing a mobile app. They place great value on User Experience and opt

Bekijk vacature »

Senior PHP developer/ Software Architect

Functie Momenteel zijn ze op zoek naar een ervaren PHP developer die zichzelf graag bezighoudt met zaken als architectuur en de algehele verbetering van structuren en standaarden. Het is eigenlijk meer operationeel als uitvoerend omdat je bezig gaat met zaken als het verder uitrollen en verbeteren van testautomatisering, codereviews, tickets en de doorloop hiervan en architectuurkeuzes. Mocht je hiernaast ook wat DevOps kennis meenemen is dit mooi meegenomen! Vanwege het kleine team maar de wereldwijde impact die zij leveren is er veel focus op kwaliteit. In deze functie werk je aan één van hun belangrijkste applicaties. Hierin werk je nauw

Bekijk vacature »

Applicatie Ontwikkelaar

Bedrijfsomschrijving DUO verzorgt als uitvoeringsorganisatie, zijnde onderdeel van het Ministerie van Onderwijs, Cultuur en Wetenschap de uitvoering van complexe wet- en regelgeving en heeft een uitgebreid dienstenpakket. DUO financiert en informeert onderwijsdeelnemers en onderwijsinstellingen. Voor verdere informatie zie www.duo.nl Functieomschrijving Wie zoeken we? Jij bent een enthousiaste, flexibele OPS’er die het leuk vindt om het bestaande examenlandschap te vernieuwen. Je bent leergierig en hebt interesse in cloud- en containertechnieken zoals OpenShift, Docker en Helm. Je gaat een uitdaging niet uit de weg en wil je nieuw opgedane kennis graag delen met de collega’s binnen en buiten het team. Doordat de

Bekijk vacature »

Randstad B.V.- Freelance Senior Fullstack Develope

Startdatum: 01.05.2023 Richttarief: € 75,00 - €85,00 Duur van de opdracht: 1 jaar Uren per week: 40 Werkmodel: Hybride, dinsdag en donderdag aanwezig op kantoor in Diemen en meer wanneer dit nodig is. Functieomschrijving: De ideale kandidaat gaat onderdeel uitmaken van een junior team binnen het foundation domein. Vanuit het foundation domein werkt dit team samen met andere foundation teams en teams uit het online domein (professionals B2B en B2C) voor het bouwen en integreren van HRM functionaliteiten (verlof en benefits) in de persoonlijke portal van Interim Professionals. Er is meer backend werk dan frontend, maar kandidaat moet beiden leuk

Bekijk vacature »

PHP Web Developer

Functie omschrijving Voor een klein softwarebedrijf in de omgeving Roosendaal, zijn wij op zoek naar een PHP web developer met een aantal jaar werkervaring. Wil jij graag werken aan in-house software projecten voor diverse klanten? Voel jij je prettige in een klein team developers, waar jouw inbreng enorm gewaardeerd wordt? Lees dan snel verder! Jouw werkzaamheden zien er als volgt uit: Je wordt verantwoordelijk voor de ontwikkeling van diverse applicaties. Dit kan de ene keer een online platform voor aanbiedingen zijn, en de andere keer een software pakket dat gebruikt wordt om interne processen te automatiseren. Het zijn stuk voor

Bekijk vacature »

Ervaren PHP Developer

Functieomschrijving PHP Developer met brede ervaring gezocht! Ben jij een Full Stack PHP Developer met brede ervaring die toe is aan een volgende stap? Lees dan snel verder! Voor onze eindklant in de regio Nunspeet zijn wij op zoek naar een ervaren PHP Developer die het IT Team van deze organisatie gaat versterken. Wij zoeken een enthousiaste en breed georiënteerde IT-er die er voor gaat zorgen dat deze innovatieve organisatie de volgende stap gaat maken. Om deze functie goed uit te kunnen voeren moet je communicatief goed zijn en in staat zijn om zelfstandig problemen op te lossen. Daarnaast bestaat

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

05/01/2025 06:52:24
 
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.