Weet iemand hoe je het weeknummer uit een datum (bijv. 05-01-1998) kunt berekenen?
MIsschien handig als je vertelt in welke taal, meeste talen gebruiken iets als datepart functie
let er wel op dat mocht je een standaardfunctie gebruiken die tot je beschikking staat dat dit in 9 van de 10 gevallen de amerikaanse weeknummering is. De nederlandse weeknummering verschilt iets (week 52/53/1 bepaling)
De taal is epilog. Maar niemand buiten deze school werkt daarmee
. Maar gewoon een wiskundige formule is ook goed. Je kunt met epilog overigens wel dag, maand en jaar als getallen eruit halen om ermee te rekenen...
Ik heb een tijd geleden ook geprobeert hetzelfde te doen, maar moest mijn pogingen staken 
Ik kan niet echt een manier vinden dit te doen.
Kheb wel een delphi voorbeeldje gevonden...
maar die URL ben ik kwijt.
Ik kan niet echt een manier vinden dit te doen.
Kheb wel een delphi voorbeeldje gevonden...
maar die URL ben ik kwijt.
Als je het aantal dagen tussen 2 data kan berekenen, is het weeknummer een kwestie van dit aantal dagen delen door 7 en afronden.
- This line is intentionally left blank -
geen epilog (is dat zoiets als prolog?), wel een Lotus Notes formule. Die kan je vast wel herschrijven :
(Dit is voor zover ik weet wat in NL wordt toegepast)
REM "Formulae Calculate the Week Number(01-53) for any Date. ";
REM "The output follows the ISO 8601:1988 standard: ex 1997-W31-4 for
1997.07.31 ";
REM "Formulae writer : Nikolai Aasen (nsaa@pvv.org), UNI Storebrand,
Norway";
REM "Formulae written : 1997.07.30";
REM "Formulae updated : 1997.08.04";
REM "Version : 1.03";
REM "Tested on :Lotus Notes 4.6PreRelease2";
REM "This formulae is available in the";
REM "Lotus Notes FAQ: [url="http://www.keysolutions.com/NotesFAQ/";"]http://www.keysolutions.com/NotesFAQ/";[/url]
REM "More Calendar information in
[url="http://www.pip.dknet.dk/~pip10160/calendar.html";"]http://www.pip.dknet.dk/~pip10160/calendar.html";[/url]
REM "ISO 8601:1988 summary at:
[url="http://quake.stanford.edu/~lyle/ISOdate/Date.html";"]http://quake.stanford.edu/~lyle/ISOdate/Date.html";[/url]
REM
"--------------------------------------------------------------------------------------------------";
REM "Replace D with the date of interest.";
D := [1997.31.07];
REM "**************************";
REM"Calculate some data for this Year";
REM "**************************";
FirstOfYear := @Date(@Year(D); 1; 1);
LastOfYear := @Date(@Year(D); 12; 31);
FirstDayNum := @Weekday(FirstOfYear);
REM "ISO weeks start on Monday and ends on Sunday.";
ISOFirstDayNum := @If(FirstDayNum = 1; 7; FirstDayNum - 1);
REM " Week 1 of any year is the week that contains the first Thursday
in January.";
REM "=1 if 1. jan = man - thu. WeekNumber is then 1, else 0";
IsFirstWeek := 7- ISOFirstDayNum >2;
REM "The first Monday after 1. jan this Year";
FirstMonday := 9 - ISOFirstDayNum;
REM "Number of Days from 1. jan to D";
DaysToDateD:=(D-FirstOfYear)/60/60/24+1;
REM "Number of days in Year(either 365 or 366)";
DaysInYear:=(LastOfYear-FirstOfYear)/60/60/24;
REM "Number of Weeks in Year. Most years have 52 weeks, but years that
start on a
Thursday and leapyears that start on a Wednesday have 53 weeks.";
NumberOfWeeksThisYear:=@If( (ISOFirstDayNum=4 | (ISOFirstDayNum=3 &
DaysInYear=366));53;52 );
REM "***************************";
REM"Calculate some data for last Year ";
REM "***************************";
FirstOfLastYear := @Date(@Year(D)-1; 1; 1);
LastOfLastYear := @Date(@Year(D)-1; 12; 31);
FirstDayNumLast := @Weekday(FirstOfLastYear);
REM "ISO weeks start on Monday and ends on Sunday.";
ISOFirstDayNumLast := @If(FirstDayNumLast = 1; 7; FirstDayNumLast -
1);
REM "Number of days in Year(either 365 or 366)";
DaysInYearLast:=(LastOfLastYear-FirstOfLastYear)/60/60/24;
REM "Number of Weeks Last Year. Most years have 52 weeks, but years
that start on a
Thursday and leapyears that start on a Wednesday have 53 weeks.";
NumberOfWeeksLastYear:=@If( (ISOFirstDayNumLast=4 |
(ISOFirstDayNumLast =3 &
DaysInYearLast=366));53;52 );
REM "************************";
REM"Calculates the Week Number ";
REM "************************";
DDayNum := @Weekday(D);
ISODDayNum := @If(DDayNum = 1; 7; DDayNum - 1);
REM"Is D in the last Week of the last Year?";
DayInLastWeek := @If((DaysToDateD<FirstMonday & IsFirstWeek = 0);
@Return(
@Text(@Year(D)-1)+"-W"+@Text(NumberOfWeeksLastYear)+"-"+@Text(ISODDayNum));
NULL);
REM "Calculate number of Complete Weeks Between D and 1.jan";
ComplNumWeeks:=@Integer((DaysToDateD-FirstMonday)/7);
REM "Are there remaining days?";
RemainingDays:=@If( (DaysToDateD+1-(FirstMonday+7*ComplNumWeeks))>0);
NumWeeks:= IsFirstWeek+ComplNumWeeks+1;
Out :=
@If(RemainingDays;
@If( (NumWeeks>52 & NumWeeks>NumberOfWeeksThisYear );
@Return(@Text(@Year(D)+1)+"-W01-"+ @Text(ISODDayNum));
@Return(@Text(@Year(D))+"-W"+@Right("0"+@Text(NumWeeks);2)+"-"+@Text(ISODDayNum)));
@Return(@Text(@Year(D))+"-W"+@Right("0"+@Text(NumWeeks-1);2)
+"-"+@Text(ISODDayNum)));
Out
(Dit is voor zover ik weet wat in NL wordt toegepast)
REM "Formulae Calculate the Week Number(01-53) for any Date. ";
REM "The output follows the ISO 8601:1988 standard: ex 1997-W31-4 for
1997.07.31 ";
REM "Formulae writer : Nikolai Aasen (nsaa@pvv.org), UNI Storebrand,
Norway";
REM "Formulae written : 1997.07.30";
REM "Formulae updated : 1997.08.04";
REM "Version : 1.03";
REM "Tested on :Lotus Notes 4.6PreRelease2";
REM "This formulae is available in the";
REM "Lotus Notes FAQ: [url="http://www.keysolutions.com/NotesFAQ/";"]http://www.keysolutions.com/NotesFAQ/";[/url]
REM "More Calendar information in
[url="http://www.pip.dknet.dk/~pip10160/calendar.html";"]http://www.pip.dknet.dk/~pip10160/calendar.html";[/url]
REM "ISO 8601:1988 summary at:
[url="http://quake.stanford.edu/~lyle/ISOdate/Date.html";"]http://quake.stanford.edu/~lyle/ISOdate/Date.html";[/url]
REM
"--------------------------------------------------------------------------------------------------";
REM "Replace D with the date of interest.";
D := [1997.31.07];
REM "**************************";
REM"Calculate some data for this Year";
REM "**************************";
FirstOfYear := @Date(@Year(D); 1; 1);
LastOfYear := @Date(@Year(D); 12; 31);
FirstDayNum := @Weekday(FirstOfYear);
REM "ISO weeks start on Monday and ends on Sunday.";
ISOFirstDayNum := @If(FirstDayNum = 1; 7; FirstDayNum - 1);
REM " Week 1 of any year is the week that contains the first Thursday
in January.";
REM "=1 if 1. jan = man - thu. WeekNumber is then 1, else 0";
IsFirstWeek := 7- ISOFirstDayNum >2;
REM "The first Monday after 1. jan this Year";
FirstMonday := 9 - ISOFirstDayNum;
REM "Number of Days from 1. jan to D";
DaysToDateD:=(D-FirstOfYear)/60/60/24+1;
REM "Number of days in Year(either 365 or 366)";
DaysInYear:=(LastOfYear-FirstOfYear)/60/60/24;
REM "Number of Weeks in Year. Most years have 52 weeks, but years that
start on a
Thursday and leapyears that start on a Wednesday have 53 weeks.";
NumberOfWeeksThisYear:=@If( (ISOFirstDayNum=4 | (ISOFirstDayNum=3 &
DaysInYear=366));53;52 );
REM "***************************";
REM"Calculate some data for last Year ";
REM "***************************";
FirstOfLastYear := @Date(@Year(D)-1; 1; 1);
LastOfLastYear := @Date(@Year(D)-1; 12; 31);
FirstDayNumLast := @Weekday(FirstOfLastYear);
REM "ISO weeks start on Monday and ends on Sunday.";
ISOFirstDayNumLast := @If(FirstDayNumLast = 1; 7; FirstDayNumLast -
1);
REM "Number of days in Year(either 365 or 366)";
DaysInYearLast:=(LastOfLastYear-FirstOfLastYear)/60/60/24;
REM "Number of Weeks Last Year. Most years have 52 weeks, but years
that start on a
Thursday and leapyears that start on a Wednesday have 53 weeks.";
NumberOfWeeksLastYear:=@If( (ISOFirstDayNumLast=4 |
(ISOFirstDayNumLast =3 &
DaysInYearLast=366));53;52 );
REM "************************";
REM"Calculates the Week Number ";
REM "************************";
DDayNum := @Weekday(D);
ISODDayNum := @If(DDayNum = 1; 7; DDayNum - 1);
REM"Is D in the last Week of the last Year?";
DayInLastWeek := @If((DaysToDateD<FirstMonday & IsFirstWeek = 0);
@Return(
@Text(@Year(D)-1)+"-W"+@Text(NumberOfWeeksLastYear)+"-"+@Text(ISODDayNum));
NULL);
REM "Calculate number of Complete Weeks Between D and 1.jan";
ComplNumWeeks:=@Integer((DaysToDateD-FirstMonday)/7);
REM "Are there remaining days?";
RemainingDays:=@If( (DaysToDateD+1-(FirstMonday+7*ComplNumWeeks))>0);
NumWeeks:= IsFirstWeek+ComplNumWeeks+1;
Out :=
@If(RemainingDays;
@If( (NumWeeks>52 & NumWeeks>NumberOfWeeksThisYear );
@Return(@Text(@Year(D)+1)+"-W01-"+ @Text(ISODDayNum));
@Return(@Text(@Year(D))+"-W"+@Right("0"+@Text(NumWeeks);2)+"-"+@Text(ISODDayNum)));
@Return(@Text(@Year(D))+"-W"+@Right("0"+@Text(NumWeeks-1);2)
+"-"+@Text(ISODDayNum)));
Out
Alle verschillende formaten van berekening van weeknummer staan in M$ outlook (dus niet express) onder de opties van de kalender. Maar je kan ook gewoon goed zoeken bij Google en hierop uitkomen :(als eerste link!) Weeknummer berekenen
AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.
zo simpel is het dus helaas niet.Op donderdag 11 oktober 2001 14:31 schreef Knutselsmurf het volgende:
Als je het aantal dagen tussen 2 data kan berekenen, is het weeknummer een kwestie van dit aantal dagen delen door 7 en afronden.
Sorry dat ik zo'n oud topic schop,
maar ik heb een hele goede link hiervoor gevonden, en ik denk dat het nogal een redelijk probleempje kan zijn. Ook ben ik ervan overtuigd, dat wil de search zijn waarde houden, dat er ook op oude topics gereageerd kan worden
http://personal.ecu.edu/mccartyr/ISOwdALG.txt
maar ik heb een hele goede link hiervoor gevonden, en ik denk dat het nogal een redelijk probleempje kan zijn. Ook ben ik ervan overtuigd, dat wil de search zijn waarde houden, dat er ook op oude topics gereageerd kan worden
http://personal.ecu.edu/mccartyr/ISOwdALG.txt
Ceterum censeo Carthaginem esse delendam
Daar zitten wel een paar fouten in.. Belangrijkste die ik zag was de schrikkeljaar berekening.Op vrijdag 03 mei 2002 12:13 schreef Uiligheid het volgende:
Sorry dat ik zo'n oud topic schop,
maar ik heb een hele goede link hiervoor gevonden, en ik denk dat het nogal een redelijk probleempje kan zijn. Ook ben ik ervan overtuigd, dat wil de search zijn waarde houden, dat er ook op oude topics gereageerd kan worden
http://personal.ecu.edu/mccartyr/ISOwdALG.txt
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Anoniem: 50813
2. Find if Y is LeapYear
if (Y % 4 = 0 and Y % 100 != 0) or Y % 400 = 0
then
Y is LeapYear
else
Y is not LeapYear
(waar % = modulus)
Wat is hier dan verkeerd aan? Zoals Uiligheid al meldde heeft het alleen zin om de search up to date te houden als er zinnige dingen worden gezegd. Geef dan in ieder geval aan wat er verkeerd is.
if (Y % 4 = 0 and Y % 100 != 0) or Y % 400 = 0
then
Y is LeapYear
else
Y is not LeapYear
(waar % = modulus)
Wat is hier dan verkeerd aan? Zoals Uiligheid al meldde heeft het alleen zin om de search up to date te houden als er zinnige dingen worden gezegd. Geef dan in ieder geval aan wat er verkeerd is.
Pagina: 1