Datum uit weeknummers

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Embedded Software Developer

Functie omschrijving Voor een mooi softwarebedrijf in omgeving Moordrecht zijn wij op zoek naar een Embedded Software developer. Ben jij enthousiast en een echte team player? Lees dan snel of dit iets voor jou is! Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Laat dan snel wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot

Bekijk vacature »

C# .NET Developer

Functieomschrijving Voor dit leuke softwarre bedrijf in de omgeving Vught zijn we per direct op zoek naar een C#/.NET Developer. Is development jouw passie en doe je dit graag met C#/.NET? Lees dan snel verder! Jou werkzaamheden zullen zijn: Zorgen voor de optimalisatie van de huidige software en het automatiseren van bedrijfsprocessen. Naar aanleiding van de wensen van de klant ga je, met je collega's op zoel naar passende oplossingen en je werkt dit uit tot een mooi eindproduct. Je gaat webshops, websites en webapplicaties ontwikkelen door middel van ASP.NET, C# en MVC Framework. Bedrijfsprofiel Deze opdrachtgever houdt zich bezig

Bekijk vacature »

C# .NET Developer

Dit ga je doen Ontwikkelen van de Back-end in .NET6 / C# en WebAPI (Focus);) Ontwikkelen van de Front-End in Nodje.js en Angular (secundair); Ontwikkelen in Blazor; Opstellen van een technisch ontwerp; Testen, documenteren en implementeren van de nieuwe applicatie; Verzorgen van de nazorg, na de implementatie. Hier ga je werken Binnen deze organisatie werken duizenden mensen binnen allerlei verschillende disciplines. Tevens hebben zij veel specialiteiten in huis, waaronder ook .Net Developers. Ter uitbreiding van een nieuw team en ter ondersteuning van het project zijn ze opzoek naar een nieuwe collega voor het team. Als C#.NET Developer zal jij je

Bekijk vacature »

PHP Laravel Ontwikkelaar

Functie omschrijving Weet jij alles over Laravel en krijg je energie van het developen van software hiermee? Laat het weten want wij zoeken een PHP/Laravel developer in regio 's-Hertogenbosch voor klein bedrijf welke softwareoplossingen maakt voor hun klanten. Jouw taken hierbij: Softwareapplicaties ontwikkelen en verder optimaliseren in veel diverse projecten op basis van Agile/Scrum. Documentatie schrijven over applicaties. Uitleg geven over software en applicaties Klantcontact hebben over bestaande applicaties. Techstack: PHP, Laravel, HTML, CSS, Javascript. Bedrijfsprofiel Deze organisatie zit in de regio van 's-Hertogenbosch en is een klein bedrijf. Er werken circa 15 medewerkers, verdeeld in meerdere teams, zoals back-end

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 »

SQL developer

Functieomschrijving Voor een erkende werkgever in de omgeving van Tilburg zijn wij op zoek naar een ervaren SQL ontwikkelaar. Hier wordt jij mede verantwoordelijk voor zowel de design en implementatie van SQL-databases als voor het verstaan van de processen van klanten naar het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt er als volgt uit te zien: Het ontwerpen en implementeren van databaseschema's: Je bent in staat om een database te ontwerpen en de structuur van tabellen, relaties, indexen en andere objecten te definiëren; Het schrijven van complexe SQL-query's: Je kunt complexe query's schrijven om gegevens uit de database

Bekijk vacature »

Fullstack developer - medior

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en zou jij graag bij een platte maar informele organisatie willen werken? Voor een mooi softwarebedrijf in omgeving Dordrecht zijn wij op zoek naar versterking voor op de afdeling Software Development! Als Fullstack developer wordt je bij dit bedrijf onderdeel van de volledige ontwikkeling van requirement tot oplevering! Werkzaamheden Jouw focus ligt op de front end en alles wat daarbij komt kijken. Je gaat ontwerpen, ontwikkelen, testen en valideren. Je zult voornamelijk werken met React.js en Typescript. Maar ook Javascript, HTML en CSS komen aanbod. Daarnaast zal je ook regelmatig met

Bekijk vacature »

.NET developer

Functie The position we have for you As a .NET developer you will work for one of our customers active in the High Tech Industry. Our customers are mainly located in the Eindhoven area. We are very selective when it comes to the projects we accept and therefore only focus on innovative and complex projects. Because our customers are mainly specialized in machine construction, you often work close to the machines. Our team currently consists of Embedded engineers, IOT developers and Cloud engineers. We mainly work on Microsoft projects where WPF, UWP, .NET Core and Microsoft Azure are used. Eisen

Bekijk vacature »

Medior/senior front end developer

Functie Vanwege de groei binnen het bedrijf zijn ze op zoek naar een Technische front end developer. Momenteel hun front end back end team gescheiden aan het werk. Hier willen ze verandering in krijgen. Omdat ook veel interne applicaties ontwikkeld worden zoeken ze iemand die hen kan helpen om de interne applicaties te voorzien van de juiste Vue.js componenten. Zodoende willen ze de interactie tussen front end en back end versoepelen en de volgende stap binnen het platform gaan zetten. Deze componenten die jij ontwikkeld zullen in elk project gebruikt worden. Het back end team bestaat momenteel uit 8 ontwikkelaars

Bekijk vacature »

Fullstack Software Developer

Bedrijfsomschrijving Functieomschrijving Java ontwerpen, bouwen en testen (T-shaped). Als senior ontwikkelaar ben je bekend in zowel de back-end als de frontend van een applicatie. Angular, Continious Delivery / Integration. Een ervaren iemand die de leiding kan nemen, een weg vindt in nieuwe situaties, en in oude applicaties. Initiatiefrijk, bekend met de (technische) omgevingen die we bij duo gebruiken, niet te beroerd om collega’s te helpen. Als senior programmeur in staat om op te treden als lead programmeur. Ondersteunt de testers bij de testautomatisering en minder ervaren programmeurs bij dagelijks werkzaamheden. Dit laatste met name op het gebied van Angular. Achtergrond

Bekijk vacature »

.NET Developer

Dit ga je doen Binnen het team bouw je aan een applicatie met andere .Net Developers, testers een Product Owner en een Business Analyst. Met het team wordt de backlog besproken. In overleg claim jij jouw deel en zorgt ervoor dat onderhoud en innovatie wordt gerealiseerd. Het project dat momenteel draait is het opgraden van de omgeving. Doorontwikkelen van de huidige applicatie; Overleggen met teamleden om de backlog te verdelen; Onderhouden van de huidige omgeving; Sparren met de business en het ophalen van nieuwe requirements. Hier ga je werken De organisatie is een van de grootste landelijke aanbieder van diverse

Bekijk vacature »

C# .NET developer voor innovatieve applicaties gez

Bedrijfsomschrijving Deze werkgever houdt zich al ruim 20 jaar bezig met het ontwikkelen van innovatieve software en dat willen ze graag nog lang doorzetten. En dat merk je ook als je als .NET developer hier aan de slag gaat. De applicaties worden continu doorontwikkeld met altijd als uitgangspunt dat zowel de kwaliteit als het gebruikersgemak van hoog niveau is. Het bedrijf telt inmiddels ruim 25 medewerkers waarvan meer dan de helft op de development afdeling werken. Meer weten over deze werkgever? Mail naar [email protected] of bel 0657578548 Functieomschrijving Je komt te werken in een Scrum team met andere .NET developers

Bekijk vacature »

Low Code Developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en ben jij HBO afgestudeerd in de richting van IT? Heb jij verstand van datamodellering, NO CODE Platformen en kun jij het aan om projecten te leiden? Voor een leuke opdrachtgever in omgeving Rotterdam zijn wij op zoek naar een No Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten in heel het land! Wat ga je hier zoal doen? Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform, je kunt denken aan

Bekijk vacature »

Digitale Tovenaar Gezocht: Junior Low-code/No-code

Bedrijfsomschrijving Duik mee in een wereld vol innovatieve avonturen waar gegevens en technologie een magische symbiose aangaan! Al meer dan twee decennia lang zijn we de tovenaars achter de schermen die oplossingen creëren voor de meest complexe klantcontactvraagstukken en datagedreven software-uitdagingen. Bij ons draait het om de kracht van samenwerking en groei. We zijn een hechte vriendengroep die samen bergen verzet om elkaar én onze klanten te laten schitteren. Jouw succes is ons succes en we streven ernaar om elkaar naar nieuwe hoogten te tillen, niet voor even, maar voor altijd. We willen dat jij je helemaal thuis voelt in

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 »

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

03/01/2025 02:05:43
 
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.