/** * Built-in date/time functions: TODAY, NOW, YEAR, MONTH, DAY. * * Dates use the **Excel serial-number model**: day 1 is 1900-01-01, so a date is * a number of days since the 1899-12-30 epoch and a datetime carries a * fractional day. TODAY/NOW read the injected {@link EvalContext.now} clock (not * `Date.now()`), keeping them deterministic under test and stable within a * single recalculation pass. All arithmetic is done in UTC for determinism. * * @packageDocumentation */ import type { FormulaFunction } from './formula-function'; import { FunctionCategory } from './formula-function'; import type { EvalContext } from '../types/eval-context'; import type { FormulaArgument, FormulaValue } from '../types/formula.types'; /** `TODAY()` — today's date as an Excel serial number (integer). Volatile. */ export declare class TodayFunction implements FormulaFunction { readonly name = "TODAY"; readonly category = FunctionCategory.DateTime; readonly minArgs = 0; readonly maxArgs = 0; readonly volatile = true; readonly description = "Returns today's date as a serial number."; evaluate(_args: readonly FormulaArgument[], ctx: EvalContext): FormulaValue; } /** `NOW()` — current date and time as an Excel serial number. Volatile. */ export declare class NowFunction implements FormulaFunction { readonly name = "NOW"; readonly category = FunctionCategory.DateTime; readonly minArgs = 0; readonly maxArgs = 0; readonly volatile = true; readonly description = "Returns the current date and time as a serial number."; evaluate(_args: readonly FormulaArgument[], ctx: EvalContext): FormulaValue; } /** Base for the YEAR/MONTH/DAY extractors. */ declare abstract class DatePartFunction implements FormulaFunction { abstract readonly name: string; readonly category = FunctionCategory.DateTime; readonly minArgs = 1; readonly maxArgs = 1; evaluate(args: readonly FormulaArgument[]): FormulaValue; /** Extracts the desired UTC calendar part from `d`. */ protected abstract part(d: Date): number; } /** `YEAR(date)` — the 4-digit year. */ export declare class YearFunction extends DatePartFunction { readonly name = "YEAR"; readonly description = "Returns the year of a date."; protected part(d: Date): number; } /** `MONTH(date)` — the month (1–12). */ export declare class MonthFunction extends DatePartFunction { readonly name = "MONTH"; readonly description = "Returns the month of a date (1\u201312)."; protected part(d: Date): number; } /** `DAY(date)` — the day of the month (1–31). */ export declare class DayFunction extends DatePartFunction { readonly name = "DAY"; readonly description = "Returns the day of the month of a date (1\u201331)."; protected part(d: Date): number; } export {}; //# sourceMappingURL=datetime-functions.d.ts.map