What's the Current Week Number?
This week is ...
Week 41
Week 41 is from Monday, October 7, 2024 until (and including) Sunday, October 13, 2024.
Week number according to the ISO-8601 standard, weeks starting on Monday. The first week of the year is the week that contains that year's first Thursday (='First 4-day week'). ISO representation: 2024-W41
The highest week number in a year is either 52 or 53.
2024 has 52 weeks.
ISO 8601 is not the only week numbering system in the world, other systems use weeks starting on Sunday (US) or Saturday (Islamic).
Lists of week numbers by year : 2023 - 2024 - 2025 - 2026 ...
Programming routines
Microsoft Excel / LibreOffice Calc
=ISOWEEKNUM(TODAY()) or (in older versions): =WEEKNUM(TODAY(),21)
Where the return type '21' is ISO-8601 (week starting on Monday).
In Excel 2007 your best choice is WEEKNUM(TODAY(),2) (2=week starting Monday).
WEEKNUM(TODAY()) will show the week number with weeks starting on Sunday (return type = 1).
Google Docs Spreadsheet
=WEEKNUM(TODAY();21)
Type (here '21') is compatible with Excel/LibreOffice, 21 is ISO-8601
PHP
$weekNumber = date("W");
or date("W", epoch)
for other week numbers. Remember to use capital 'W' not 'w'.
Python
datetime.date.today().isocalendar()[1]
PERL
my $weekNumber = POSIX::strftime("%V", gmtime time);
Replace time with other epoch/UNIX timestamps for other week numbers.
Java
Calendar now = Calendar.getInstance(); now.get(Calendar.WEEK_OF_YEAR);
Use WEEK_OF_YEAR in the Calendar class.
More info on Stack Overflow
JavaScript
Date.prototype.getWeek = function () { var target = new Date(this.valueOf()); var dayNr = (this.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); } var d= new Date(); alert(d.getWeek());
Extend the Date class using the above code.
C#
See the ISO-8601 update on Stack Overflow
MySQL
SELECT WEEKOFYEAR(NOW())
Replace now() with other dates eg. SELECT WEEKOFYEAR('2024-02-20');
(You can also use the WEEK function with mode=3 select week(now(),3)
)
PostgreSQL
SELECT * FROM EXTRACT(WEEK from current_date())
MS SQL
SELECT DATEPART( wk, GETDATE() )
Oracle
SELECT to_char(sysdate, 'IW') FROM DUAL
IW: Week of year (1-52 or 1-53) based on the ISO-8601 standard.
WW: Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year (Mostly NOT used)
iSeries SQL
SELECT WEEK(NOW()) from sysibm.sysdummy1
iPhone/Mac
[NSString stringWithFormat:@"Week %d", [calendar ordinalityOfUnit:NSWeekCalendarUnit inUnit:NSYearCalendarUnit forDate:date]];
iPhone/iOS/Swift
let gregorian = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)! gregorian.firstWeekday = 2 // Monday gregorian.minimumDaysInFirstWeek = 4 let components = gregorian.components(.WeekOfYearCalendarUnit | .YearForWeekOfYearCalendarUnit, fromDate: date) let week = components.weekOfYear let year = components.yearForWeekOfYear
R
lubridate::week()
Ruby
week_number = Time.now.strftime("%U")
Replace Time.now with Time.local(year,month,day) for other dates.
Formats:
%U - Week number of the year, starting with the first Sunday as the first day of the first week (00..53)
%V - Week number of year according to ISO-8601 (01..53)
%W - Week number of the year, starting with the first Monday as the first day of the first week (00..53)
Go
year, week := time.Now().ISOWeek()
Linux/Unix shell (bash)
date +%V
Returns the ISO-8601 week number.
Other formats under 'Ruby'. More details in the Linux Programmer's Manual
Lua
Current_week = os.date("%V")
Formats: see formats under 'Ruby'.
Windows PowerShell
Get-Date -UFormat %V # or "{0:d2}" -f ($(Get-Culture).Calendar.GetWeekOfYear($(Get-Date), [System.Globalization.CalendarWeekRule]::FirstFourDayWeek, [DayOfWeek]::Monday))
X++ (Microsoft Dynamics AX)
int weeknum; weeknum = weekOfYear(today());
C/AL (Microsoft Dynamics NAV):
MESSAGE(FORMAT(CALCDATE('CW', TODAY), 0, '<week>'));
Thanks to everyone who sent me corrections and updates!