Excel 16.0 build 20430
Windows, 64-bit, CPU not recorded
19,523 captured inputs are indexed for this environment. Capture dates: 2026-09-29 to 2026-09-29. This is a reading count, not a comparison with another build.
Date and time functions
Matches all 19,534 recorded answers
Recorded: 19,523 in the answer bank and 11 workbook cells. How we measure this · See the Rust code
| Language | Name in Excel |
|---|---|
| Arabic | WEEKDAY |
| Bulgarian | WEEKDAY |
| Czech | DENTÝDNE |
| Danish | UGEDAG |
| German | WEEKDAY |
| Greek | WEEKDAY |
| English (Australia) | WEEKDAY |
| English (United Kingdom) | WEEKDAY |
| English (United States) | WEEKDAY |
| Spanish | DIASEM |
| Estonian | WEEKDAY |
| Finnish | WEEKDAY |
| French | JOURSEM |
| Hebrew | WEEKDAY |
| Croatian | WEEKDAY |
| Hungarian | HÉT.NAPJA |
| Indonesian | WEEKDAY |
| Italian | WEEKDAY |
| Japanese | WEEKDAY |
| Korean | WEEKDAY |
| Lithuanian | WEEKDAY |
| Latvian | WEEKDAY |
| Norwegian | HVERDAG |
| Dutch | WEEKDAG |
| Polish | DZIEŃ.TYG |
| Portuguese (Brazil) | WEEKDAY |
| Portuguese (Portugal) | DIA.SEMANA |
| Romanian | WEEKDAY |
| Russian | ДЕНЬНЕД |
| Slovak | WEEKDAY |
| Slovenian | WEEKDAY |
| Serbian (Latin) | WEEKDAY |
| Swedish | VECKODAG |
| Thai | WEEKDAY |
| Turkish | HAFTANINGÜNÜ |
| Ukrainian | WEEKDAY |
| Vietnamese | WEEKDAY |
| Chinese (Simplified) | WEEKDAY |
| Chinese (Hong Kong) | WEEKDAY |
| Chinese (Traditional) | WEEKDAY |
Names from Microsoft's support site.
WEEKDAY(serial_number, [return_type])
WEEKDAY returns which day of the week a date falls on, as a number. The mapping from serial to
weekday is fixed by the serial line; what return_type selects is only the numbering — which
day counts as 1, and whether the range starts at 0 or 1.
Underneath the ten documented conventions there is one function and two knobs: an origin day and a zero-or-one base. Everything in the table below is that single rotation.
return_type | Numbers returned |
|---|---|
| 1 or omitted | 1 (Sunday) through 7 (Saturday) |
| 2 | 1 (Monday) through 7 (Sunday) |
| 3 | 0 (Monday) through 6 (Sunday) |
| 11 | 1 (Monday) through 7 (Sunday) |
| 12 | 1 (Tuesday) through 7 (Monday) |
| 13 | 1 (Wednesday) through 7 (Tuesday) |
| 14 | 1 (Thursday) through 7 (Wednesday) |
| 15 | 1 (Friday) through 7 (Thursday) |
| 16 | 1 (Saturday) through 7 (Friday) |
| 17 | 1 (Sunday) through 7 (Saturday) |
Three features of that table are worth pointing at, because they are the source of most WEEKDAY
bugs:
return_type 3 is the only zero-based option. Formulas that switch between 2 and 3 without
adjusting are off by one everywhere.return_type − 10, counting Monday as 1); 1, 2 and 3 are the
legacy options that predate it.return_type for ISO week semantics. WEEKDAY(s, 2) is the ISO-compatible
day numbering (Monday = 1), but week numbering is a separate function — see
ISOWEEKNUM.Weekday is where Excel's phantom 29 February 1900 becomes an observable wrong answer rather than a
harmless coordinate shift. Because serial 60 occupies a slot that no real day occupies, every
serial from 1 to 59 sits one position out of phase with the true weekday of the day it names.
Microsoft's leap-year article states this plainly as the one residual problem of not fixing the
bug: WEEKDAY "returns incorrect values for dates before March 1, 1900". Dates from 1 March 1900
onwards are unaffected.
This is not a defect this Handbook is alleging; it is documented by the vendor. What has not been checked here is exactly where the phase break falls in a running Excel — see below.
WEEKDAY(serial_number, [return_type]) — one required argument and one optional.
serial_number — "a sequential number that represents the date of the day you are trying to
find". Microsoft's page repeats the category advice to use DATE rather than text, since text
dates may be interpreted differently.
return_type — optional; the numbering convention, per the table above. Omitted means 1 (Sunday = 1). Values outside the documented set are an error, not a silent default.
The commonly misunderstood position is return_type itself: readers assume the number names the
first day of the week directly, which is true for 11–17 (offset by 10) and false for 1, 2 and 3.
Returns a Number in 1…7, or 0…6 for return_type 3.
DATE behave differently across the two systems.As documented on the Microsoft page:
#NUM! when serial_number is out of range for the current date-base value.#NUM! when return_type is outside the range in the table above.#VALUE! from an argument that will not coerce to a number, and propagation of an error argument,
are the ordinary behaviours from
coercion and lifting, not WEEKDAY-specific rules.
return_type. Ten independent branches is ten chances to mis-key a row.return_type against the exact documented set — {1, 2, 3, 11, 12, 13, 14, 15, 16,
17}. It is not a range: 4 through 10 are invalid, and so is 18.MOD with negative operands if the canonical index is computed by modular
arithmetic; the serial range is guarded, but intermediate offsets need not be.Quoted from the public repository DnaCalc/DnaCalc, crates calc-func and calc-fml, at commit 9e1884369a67. Comments are the source's own. A kernel shared with other functions appears once, on its module page.
WEEKDAY · 5 lines · calc-func/src/catalogue/dates.rs on GitHub16 weekday_fn "WEEKDAY" (1, 2) [V "serial_number", V "return_type"] |s, a, sv| {
let serial = date_arg(s, a, 0)?;
let kind = return_type(s, a, false)?;
out(s, k::weekday(serial, kind))
}
environment catalogue/datessystem catalogue/datesto_1900 catalogue/datesdate_arg catalogue/datesstrict_num catalogue/datesreturn_type catalogue/dateswhole_serial ported/date_kernelswhole ported/date_kernelsweekday_sunday_one_based ported/date_kernelsremap_weekday ported/date_kernelsweekday_of ported/date_kernelsweekday ported/date_kernelstext ported/text_kernelstext_from_str ported/text_kernelsdate_integer_floor ported/text_kernelspush_singleton_or_original ported/text_kernelspush_upper ported/text_kernelsupper ported/text_kernelsNo implementation has been published with a Handbook test suite for this function.
The recorded environments below distinguish a reading from a same-input comparison. Counts describe captured inputs in each environment; overlapping captures and comparisons are not totals of unique worksheet calls.
| Excel 16.0 build | Platform and CPU | Captured inputs |
|---|---|---|
| 20430 | Windows, 64-bit, CPU not recorded | 19,523 |
The record contains no same-input comparison between these environments. Reading different inputs on different builds does not establish either a version change or cross-build agreement.
Recorded environments and comparison details.
Windows, 64-bit, CPU not recorded
19,523 captured inputs are indexed for this environment. Capture dates: 2026-09-29 to 2026-09-29. This is a reading count, not a comparison with another build.
return_type table (1, 2, 11–17, 21). The two tables look similar and mean different
things; the return_type values are not interchangeable between the functions.WEEKNUM(s, 21)
on the documented reading..INTL variants make the weekend definition explicit instead.TEXT function with a "ddd"/"dddd" format code returns the weekday's name, and is
locale-dependent where WEEKDAY is not.No named variants are recorded yet.
Suggest a correction or contribute an implementation · For agents