Date and time functions

NOW

Matches all 2 recorded answers

Recorded: 2 workbook cells. A volatile function: the recorded formulas hold it fixed, for example RAND()*0, so these cells show that the call works and not a clock or random value. How we measure this · See the Rust code

Local names in 40 languages
LanguageName in Excel
Arabicالآن
BulgarianNOW
CzechNOW
DanishNU
GermanJETZT
GreekNOW
English (Australia)NOW
English (United Kingdom)NOW
English (United States)NOW
SpanishAHORA
EstonianNOW
FinnishNOW
FrenchMAINTENANT
HebrewNOW
CroatianNOW
HungarianMOST
IndonesianNOW
ItalianADESSO
JapaneseNOW
KoreanNOW
LithuanianNOW
LatvianNOW
NorwegianNÅ
DutchNU
PolishTERAZ
Portuguese (Brazil)AGORA
Portuguese (Portugal)AGORA
RomanianNOW
RussianТДАТА
SlovakNOW
SlovenianNOW
Serbian (Latin)NOW
SwedishNU
ThaiNOW
TurkishŞİMDİ
UkrainianNOW
VietnameseNOW
Chinese (Simplified)NOW
Chinese (Hong Kong)NOW
Chinese (Traditional)NOW

Names from Microsoft's support site.

What it does

NOW()

NOW returns the current date and time as a date serial: the whole part is today's date and the fractional part is the time of day. It reads the host's clock, and it takes no arguments.

That makes it the one function in this assignment that is not a function in the mathematical sense at all. Everything else here maps arguments to a value; NOW maps nothing to a value that changes. Three consequences, and they are the substance of this page.

It is volatile

Volatility is not a performance footnote. A single NOW in a large model marks its whole dependent subtree dirty on every recalculation, and volatility is contagious through the dependency graph. It is also the reason NOW does not tick: the value changes when Excel recalculates, not continuously. A cell showing NOW is a timestamp of the last recalculation, not a clock.

It is not testable the way the rest of the category is

A vector suite pairs an input with an expected output. NOW has no input, and its output is a function of when you asked. There is nothing for a vector to hold. The refusal is a statement about the function's nature, not about the harness's limitations — and it is exactly the kind of typed missingness the Handbook prefers to a fabricated pass.

What can be characterized, given a controlled clock, are the properties around the value:

  • the mapping from a known wall-clock instant to a serial (which is the DATE/TIME model, already testable without NOW);
  • the granularity — how finely the fractional part is quantized, which is a host-clock property;
  • the stability within one recalculation — whether two NOW calls in one pass return the same value;
  • the relationship to TODAY — whether TODAY() equals INT(NOW()) at every instant, including across a midnight boundary during a single recalculation.

None of those has been established here.

It carries a formatting hint

NOW is one of the documented seed examples for the Handbook's presentation-hint model: it returns a plain number, and Excel applies a date-time format to the cell when the formula is entered into a General-formatted cell. The formatting is host-side adaptation at the worksheet boundary, not part of the value — see the value universe and the call pipeline, stage 4.

Arguments

NOW() — no arguments. The parentheses are required syntax, not an empty argument list in the value-universe sense: there is no Missing marker involved, because there is no parameter slot.

Everything that varies about NOW's result comes from outside the call: the machine's clock, its time zone, its daylight-saving state, and the workbook's date system. None of these is an argument, and none of them is visible to a formula.

Try it

Input cells (optional)

Example: {"B2": 3, "B3": 4}. A1 holds the formula. Other cells need values before a formula can read them.

Enter a formula, then calculate.

Runs locally in your browser with OneCalc. Its answer may differ from Excel. Use English function names and commas between arguments.

Quirks

Result and edge cases

Returns a Number: a date serial with a fractional part.

  • Local time, not UTC. The value reflects the machine's local clock; the same workbook opened in two time zones shows different values. There is no argument and no worksheet function in this category to convert between them.
  • Daylight-saving transitions make the local clock non-monotonic once a year. NOW inherits that: a value read before and after a backward transition can go down.
  • Granularity is a host property. Whether the fractional part carries seconds, or something finer or coarser, is not something the function's contract states.
  • Representability. The fraction is a double and 1/86400 is not exact, so the value is a nearby double rather than the exact time — the same caveat as on TIME, and it matters when NOW results are compared for equality or fed to SECOND.
  • A static timestamp is not this function. Excel's keyboard shortcuts for entering a fixed date or time insert a literal value, not a NOW formula; the two look identical in a cell and behave completely differently on the next recalculation.

Errors

NOW takes no arguments, so it has no argument-derived error conditions. There is no documented error return.

The interesting failure modes are not error values at all: they are host-level — a clock outside the representable serial range, or an unavailable time provider — and lie outside what a worksheet formula can observe.

How to implement

Notes for implementers

  1. Freeze the instant for the duration of a recalculation pass. Two NOW calls in one evaluation must agree, or formulas comparing them can observe a moment that never existed — NOW() - NOW() should be zero.
  2. Declare volatility explicitly so the recalculation engine can propagate it. A NOW that is not declared volatile produces a workbook that quietly shows stale times.
  3. Do the local-time conversion outside the serial arithmetic, and record the time zone and daylight-saving state as part of any captured observation. A recorded NOW value without its zone is uninterpretable.
  4. Do not attempt an excel-bitexact claim for this function. The claim would have to be about the clock, not the computation.

Rust code

Show the CalcFunc source of this function

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.

NOW · 4 lines · calc-func/src/catalogue/dates.rs on GitHub
24 now_fn "NOW" (0, 0) [] |s, a, sv| {
    let now = now(s)?;
    serial_out(s, Ok(now))
}

Kernels shared with other functions

Argument and result plumbing

  • out catalogue/kit

No implementation has been published with a Handbook test suite for this function.

Version differences

No comparison between specific Excel builds is recorded here yet. This does not establish that all builds behave alike.

Alternatives

Relationships

  • TODAY — the date-only sibling with the same volatility and the same host dependency. INT(NOW()) and TODAY() are expected to agree; unverified here, and interesting precisely at midnight.
  • HOUR, MINUTE, SECOND — the usual consumers of NOW's fractional part, and where its granularity becomes visible.
  • DATE and TIME — the deterministic constructors. Any formula that can be written with them instead of NOW should be, because it becomes testable.
  • RAND, RANDBETWEEN, OFFSET, INDIRECT, CELL, INFO — the other volatile functions. NOW is not alone in its recalculation behaviour, though it is alone with TODAY in reading a clock.
  • Confusable. NOW() versus a pasted static timestamp; and NOW() versus TODAY() where only the date is wanted, since NOW's fractional part silently breaks equality comparisons against whole-day serials.

Named variants

No named variants are recorded yet.

Suggest a correction or contribute an implementation · For agents