From 99e111026179acd12d393839c45de139ba40e638 Mon Sep 17 00:00:00 2001 From: Steve Fanning Date: Thu, 2 Jan 2025 15:36:59 +0000 Subject: [PATCH] Add MONTH function description --- docs/src/features/serial-numbers.md | 2 +- docs/src/functions/date-and-time.md | 2 +- docs/src/functions/date_and_time/month.md | 36 +++++++++++++++++++--- xlsx/tests/docs/MONTH.xlsx | Bin 9596 -> 10705 bytes 4 files changed, 33 insertions(+), 7 deletions(-) diff --git a/docs/src/features/serial-numbers.md b/docs/src/features/serial-numbers.md index ffd08cf..500f284 100644 --- a/docs/src/features/serial-numbers.md +++ b/docs/src/features/serial-numbers.md @@ -30,4 +30,4 @@ The fractional part of a serial number represents time, as a fraction of the day Since date-times are stored as numbers, they can be used for arithmetic operations in formulas. For example, it is possible to determine the difference between two dates by subtracting one serial number from the other. -**Note**: A #VALUE! error is reported if a date-formatted cell contains a number less than 1 or greater than 2,958,465. +**Note**: A #VALUE! error is reported if a date-formatted cell contains a number less than 1, or greater than or equal to 2,958,466. diff --git a/docs/src/functions/date-and-time.md b/docs/src/functions/date-and-time.md index c675130..bdeccab 100644 --- a/docs/src/functions/date-and-time.md +++ b/docs/src/functions/date-and-time.md @@ -22,7 +22,7 @@ You can track the progress in this [GitHub issue](https://github.com/ironcalc/Ir | HOUR | | – | | ISOWEEKNUM | | – | | MINUTE | | – | -| MONTH | | – | +| MONTH | | [MONTH](date_and_time/month) | | NETWORKDAYS | | – | | NETWORKDAYS.INTL | | – | | NOW | | – | diff --git a/docs/src/functions/date_and_time/month.md b/docs/src/functions/date_and_time/month.md index a3eb797..734e2b0 100644 --- a/docs/src/functions/date_and_time/month.md +++ b/docs/src/functions/date_and_time/month.md @@ -3,9 +3,35 @@ layout: doc outline: deep lang: en-US --- - -# MONTH - +# MONTH function ::: warning -🚧 This function is implemented but currently lacks detailed documentation. For guidance, you may refer to the equivalent functionality in [Microsoft Excel documentation](https://support.microsoft.com/en-us/office/excel-functions-by-category-5f91f4e9-7b42-46d2-9bd1-63f26a86c0eb). -::: \ No newline at end of file +**Note:** This draft page is under construction 🚧 +::: +## Overview +MONTH is a function of the Date and Time category that extracts the month from a valid date [serial number](/features/serial-numbers.md), returning a number in the range [1, 12]. +## Usage +### Syntax +**MONTH(date) => month** +### Argument descriptions +* *date* ([number](/features/value-types#numbers), required). The date for which the month is to be calculated, expressed as a [serial number](/features/serial-numbers.md) in the range [1, 2958466). The value 1 corresponds to the date 1899-12-31, while 2958465 corresponds to 9999-12-31. +### Additional guidance +If the supplied _date_ argument has a fractional part, MONTH uses its [floor value](https://en.wikipedia.org/wiki/Floor_and_ceiling_functions). +### Returned value +MONTH returns an integer [number](/features/value-types#numbers) in the range [1, 12], that is the month according to the [Gregorian calendar](https://en.wikipedia.org/wiki/Gregorian_calendar). The value 1 corresponds to January, 2 corresponds to February and so on. +### Error conditions +* In common with many other IronCalc functions, MONTH propagates errors that are found in its argument. +* If no argument, or more than one argument, is supplied, then MONTH returns the [`#ERROR!`](/features/error-types.md#error) error. +* If the value of the *date* argument is not (or cannot be converted to) a [number](/features/value-types#numbers), then MONTH returns the [`#VALUE!`](/features/error-types.md#value) error. +* For some argument values, MONTH may return the [`#DIV/0!`](/features/error-types.md#div-0) error. +* If date is less than 0, or greater than or equal to 2,958,466, then MONTH returns the [`#NUM!`](/features/error-types.md#num) error. +* At present, MONTH does not accept a string representation of a date literal as an argument. For example, the formula `=MONTH("2024-12-31")` returns the [`#VALUE!`](/features/error-types.md#value) error. + +## Details +IronCalc utilizes Rust's [chrono](https://docs.rs/chrono/latest/chrono/) crate to implement the MONTH function. +## Examples +[See some examples in IronCalc](https://app.ironcalc.com/?example=month). + +## Links +* See also IronCalc's [DAY](/functions/date_and_time/day.md) and [YEAR](/functions/date_and_time/year.md) functions. +* Visit Microsoft Excel's [MONTH function](https://support.microsoft.com/en-gb/office/month-function-579a2881-199b-48b2-ab90-ddba0eba86e8) page. +* Both [Google Sheets](https://support.google.com/docs/answer/3093052) and [LibreOffice Calc](https://wiki.documentfoundation.org/Documentation/Calc_Functions/MONTH) provide versions of the MONTH function. \ No newline at end of file diff --git a/xlsx/tests/docs/MONTH.xlsx b/xlsx/tests/docs/MONTH.xlsx index 2e0ff7aaa991580930e3fa5c2df8e99ac5dece82..9aebcba6fa6730de9d9443b1dc4654861a40639c 100644 GIT binary patch delta 4706 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