ISO8601 WeekOfYear() function
Posted: Thu Jul 14, 2016 7:21 am
The WeekOfYear() function is a complement to the existing Date()-functions in the library.
In some regions, such as the Nordics, the week of the year (or more commonly referred to as just the 'week') is widely used for time planning.
Link to more info: https://en.wikipedia.org/wiki/ISO_week_date
Function + Demo code:
In some regions, such as the Nordics, the week of the year (or more commonly referred to as just the 'week') is widely used for time planning.
Link to more info: https://en.wikipedia.org/wiki/ISO_week_date
Function + Demo code:
Code: Select all
EnableExplicit
;Credit for original code:
;http://techblog.procurios.nl/k/news/view/33796/14863/calculate-iso-8601-week-and-year-in-javascript.html
Procedure WeekOfYear(d.i)
!var d = new Date(v_d*1000)
!var target = new Date(d.valueOf());
!var dayNr = (d.getDay() + 6) % 7;
!target.setDate(target.getDate() - dayNr + 3);
!var firstThursday = target.valueOf();
!target.setMonth(0, 1);
!if (target.getDay() != 4) {
! target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7);
!}
!return 1 + Math.ceil((firstThursday - target) / 604800000);
EndProcedure
Procedure main()
Debug "WeekOfYear(Date()) = " + WeekOfYear(Date())
Protected yearDayCounter.i
Protected yearDayDate.f = Date(Year(Date()), 1, 1, 0, 0, 0)
For yearDayCounter = 1 To 365
Debug "WeekOfYear('" + FormatDate("%yyyy-%mm-%dd", yearDayDate) + "') = " + WeekOfYear(yearDayDate)
yearDayDate+(60*60*24) ; advance 1 day
Next
EndProcedure
main()