{
  "category": "Date and time functions",
  "display_name": "NOW",
  "entry_kind": "built_in_function",
  "eval_api": {
    "method": "POST",
    "url": "https://handbook.dnacalc.com/api/eval"
  },
  "function_id": "FUNC.NOW",
  "implementation_state": {
    "answer_bank": null,
    "detail": "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.",
    "dnacalc_commit": "9e1884369a678158dd82d3d74188daf986995e87",
    "in_catalogue": true,
    "state": "matches",
    "state_label": "Matches every recorded Excel answer",
    "summary": "Matches all 2 recorded answers",
    "workbook_corpus": {
      "cells": 2,
      "matched": 2
    }
  },
  "implementations": [
    {
      "commit": "9e1884369a678158dd82d3d74188daf986995e87",
      "flavour": "excel-compatibility-candidate",
      "language": "Rust",
      "name": "CalcFunc",
      "own_code": [
        "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/dates.rs#L337-L340"
      ],
      "repository": "https://github.com/DnaCalc/DnaCalc",
      "shared_code": [
        "catalogue/dates::environment",
        "catalogue/dates::system",
        "catalogue/dates::from_1900",
        "catalogue/dates::serial_out",
        "catalogue/dates::now"
      ],
      "source": "https://github.com/DnaCalc/DnaCalc/blob/9e1884369a678158dd82d3d74188daf986995e87/crates/calc-func/src/catalogue/dates.rs#L337-L340",
      "state": "matches",
      "suite": null,
      "summary": "Matches all 2 recorded answers"
    }
  ],
  "json_url": "https://handbook.dnacalc.com/api/functions/FUNC.NOW.json",
  "name": "NOW",
  "notes": [],
  "schema": "efh.function-reference/v1",
  "section_order": [
    "what-it-does",
    "try-it",
    "quirks",
    "how-to-implement",
    "version-differences",
    "alternatives"
  ],
  "sections": {
    "alternatives": "\n### Relationships\n\n\n- **[TODAY](FUNC.TODAY.md)** — the date-only sibling with the same volatility and the same host\n  dependency. `INT(NOW())` and `TODAY()` are expected to agree; unverified here, and interesting\n  precisely at midnight.\n- **[HOUR](FUNC.HOUR.md), [MINUTE](FUNC.MINUTE.md), [SECOND](FUNC.SECOND.md)** — the usual\n  consumers of `NOW`'s fractional part, and where its granularity becomes visible.\n- **[DATE](FUNC.DATE.md) and [TIME](FUNC.TIME.md)** — the deterministic constructors. Any formula\n  that can be written with them instead of `NOW` should be, because it becomes testable.\n- **`RAND`, `RANDBETWEEN`, `OFFSET`, `INDIRECT`, `CELL`, `INFO`** — the other volatile functions.\n  `NOW` is not alone in its recalculation behaviour, though it is alone with `TODAY` in reading a\n  clock.\n- **Confusable.** `NOW()` versus a pasted static timestamp; and `NOW()` versus `TODAY()` where only\n  the date is wanted, since `NOW`'s fractional part silently breaks equality comparisons against\n  whole-day serials.\n\n\n",
    "how-to-implement": "\n### Notes for implementers\n\n2. **Freeze the instant for the duration of a recalculation pass.** Two `NOW` calls in one\n   evaluation must agree, or formulas comparing them can observe a moment that never existed —\n   `NOW() - NOW()` should be zero.\n3. **Declare volatility explicitly** so the recalculation engine can propagate it. A `NOW` that is\n   not declared volatile produces a workbook that quietly shows stale times.\n4. **Do the local-time conversion outside the serial arithmetic**, and record the time zone and\n   daylight-saving state as part of any captured observation. A recorded `NOW` value without its\n   zone is uninterpretable.\n5. **Do not attempt an `excel-bitexact` claim for this function.** The claim would have to be about\n   the clock, not the computation.\n\n\n",
    "quirks": "\n### Result and edge cases\n\n\nReturns a `Number`: a date serial with a fractional part.\n\n- **Local time, not UTC.** The value reflects the machine's local clock; the same workbook opened\n  in two time zones shows different values. There is no argument and no worksheet function in this\n  category to convert between them.\n- **Daylight-saving transitions** make the local clock non-monotonic once a year. `NOW` inherits\n  that: a value read before and after a backward transition can go down.\n- **Granularity is a host property.** Whether the fractional part carries seconds, or something\n  finer or coarser, is not something the function's contract states.\n- **Representability.** The fraction is a double and 1/86400 is not exact, so the value is a nearby\n  double rather than the exact time — the same caveat as on [TIME](FUNC.TIME.md), and it matters\n  when `NOW` results are compared for equality or fed to [SECOND](FUNC.SECOND.md).\n- **A static timestamp is not this function.** Excel's keyboard shortcuts for entering a fixed date\n  or time insert a literal value, not a `NOW` formula; the two look identical in a cell and behave\n  completely differently on the next recalculation.\n\n\n\n### Errors\n\n\n`NOW` takes no arguments, so it has no argument-derived error conditions. There is no documented\nerror return.\n\nThe interesting failure modes are not error *values* at all: they are host-level — a clock outside\nthe representable serial range, or an unavailable time provider — and lie outside what a worksheet\nformula can observe.\n\n\n",
    "sources": "\n- Microsoft 365 support, **NOW function** —\n  <https://support.microsoft.com/en-us/office/now-function-3337fd29-145a-4347-b2e6-20c904739c46>.\n- Microsoft 365 support, **TODAY function** —\n  <https://support.microsoft.com/en-us/office/today-function-5eb3078d-a82c-4736-8930-2f51a028fdd9>.\n- Handbook call-model chapters [01 value universe](../model/01-value-universe.md) (presentation\n  hints, boundary model) and [03 call pipeline](../model/03-call-pipeline.md) (host-side\n  adaptation, which names `NOW` and `TODAY` as its documented seed examples).\n- [FUNC.DATE](FUNC.DATE.md) and [FUNC.TIME](FUNC.TIME.md) — the serial model whose value `NOW`\n  reports.\n- `data/functions/FUNC.NOW.json` (the `TimeDependent` / `VolatileFull` / `ApplicationState` /\n  `HostSerialized` / `TimeProvider` classification), `data/presence/FUNC.NOW.json`,\n  `data/battery/FUNC.NOW.json` (the declined-call rows).\n\n",
    "version-differences": "No comparison between specific Excel builds is recorded here yet. This does not establish that all builds behave alike.",
    "what-it-does": "\n`NOW` returns the current date and time as a date serial: the whole part is today's date and the\nfractional part is the time of day. It reads the host's clock, and it takes no arguments.\n\nThat makes it the one function in this assignment that is not a function in the mathematical sense\nat all. Everything else here maps arguments to a value; `NOW` maps *nothing* to a value that\nchanges. Three consequences, and they are the substance of this page.\n\n### It is volatile\n\nVolatility is not a performance footnote. A single `NOW` in a large model marks its whole dependent\nsubtree dirty on every recalculation, and volatility is contagious through the dependency graph. It\nis also the reason `NOW` does *not* tick: the value changes when Excel recalculates, not\ncontinuously. A cell showing `NOW` is a timestamp of the last recalculation, not a clock.\n\n### It is not testable the way the rest of the category is\n\nA vector suite pairs an input with an expected output. `NOW` has no input, and its output is a\nfunction of when you asked. There is nothing for a vector to hold. The refusal is a statement\nabout the function's nature, not about the harness's limitations — and it is exactly the kind of\ntyped missingness the Handbook prefers to a fabricated pass.\n\nWhat *can* be characterized, given a controlled clock, are the properties around the value:\n\n- the mapping from a known wall-clock instant to a serial (which is the\n  [DATE](FUNC.DATE.md)/[TIME](FUNC.TIME.md) model, already testable without `NOW`);\n- the **granularity** — how finely the fractional part is quantized, which is a host-clock property;\n- the **stability within one recalculation** — whether two `NOW` calls in one pass return the same\n  value;\n- the **relationship to [TODAY](FUNC.TODAY.md)** — whether `TODAY()` equals `INT(NOW())` at every\n  instant, including across a midnight boundary during a single recalculation.\n\nNone of those has been established here.\n\n### It carries a formatting hint\n\n`NOW` is one of the documented seed examples for the Handbook's presentation-hint model: it returns\na plain number, and Excel applies a date-time format to the cell when the formula is entered into a\nGeneral-formatted cell. The formatting is host-side adaptation at the worksheet boundary, not part\nof the value — see [the value universe](../model/01-value-universe.md) and\n[the call pipeline](../model/03-call-pipeline.md), stage 4.\n\n\n\n### Arguments\n\n\n`NOW()` — no arguments. The parentheses are required syntax, not an empty argument list in the\n[value-universe](../model/01-value-universe.md) sense: there is no `Missing` marker involved,\nbecause there is no parameter slot.\n\nEverything that varies about `NOW`'s result comes from outside the call: the machine's clock, its\ntime zone, its daylight-saving state, and the workbook's date system. None of these is an argument,\nand none of them is visible to a formula.\n\n\n"
  },
  "signature": {
    "display": "NOW()",
    "parameters": [],
    "trailing_repeats": false
  },
  "sources": {
    "metadata": {
      "admission": {
        "label": "implemented",
        "reason": null
      },
      "arity": {
        "max": 0,
        "min": 0
      },
      "category": "Date and time functions",
      "classification": {
        "arg_preparation_profile": "ValuesOnlyPreAdapter",
        "coercion_lift_profile": "None",
        "determinism_class": "TimeDependent",
        "error_collapse_profile": "None",
        "fec_dependency_profile": "TimeProvider",
        "host_interaction_class": "ApplicationState",
        "kernel_signature_class": "Custom",
        "rich_value_usage": "ProducesPresentation",
        "surface_fec_dependency_profile": "TimeProvider",
        "thread_safety_class": "HostSerialized",
        "volatility_class": "VolatileFull"
      },
      "descriptions": {
        "long": null,
        "short": "Current date and time as a serial number",
        "short_source": "dna-calc-own"
      },
      "docs": {
        "english_description": "Returns the serial number of the current date and time",
        "microsoft_url": "https://support.microsoft.com/en-us/office/now-function-3337fd29-145a-4347-b2e6-20c904739c46"
      },
      "entry_kind": "built_in_function",
      "localized_family_names": null,
      "localized_names": [
        {
          "locale": "ar-SA",
          "name": "الآن"
        },
        {
          "locale": "bg-BG",
          "name": "NOW"
        },
        {
          "locale": "cs-CZ",
          "name": "NOW"
        },
        {
          "locale": "da-DK",
          "name": "NU"
        },
        {
          "locale": "de-DE",
          "name": "JETZT"
        },
        {
          "locale": "el-GR",
          "name": "NOW"
        },
        {
          "locale": "en-AU",
          "name": "NOW"
        },
        {
          "locale": "en-GB",
          "name": "NOW"
        },
        {
          "locale": "en-US",
          "name": "NOW"
        },
        {
          "locale": "es-ES",
          "name": "AHORA"
        },
        {
          "locale": "et-EE",
          "name": "NOW"
        },
        {
          "locale": "fi-FI",
          "name": "NOW"
        },
        {
          "locale": "fr-FR",
          "name": "MAINTENANT"
        },
        {
          "locale": "he-IL",
          "name": "NOW"
        },
        {
          "locale": "hr-HR",
          "name": "NOW"
        },
        {
          "locale": "hu-HU",
          "name": "MOST"
        },
        {
          "locale": "id-ID",
          "name": "NOW"
        },
        {
          "locale": "it-IT",
          "name": "ADESSO"
        },
        {
          "locale": "ja-JP",
          "name": "NOW"
        },
        {
          "locale": "ko-KR",
          "name": "NOW"
        },
        {
          "locale": "lt-LT",
          "name": "NOW"
        },
        {
          "locale": "lv-LV",
          "name": "NOW"
        },
        {
          "locale": "nb-NO",
          "name": "NÅ"
        },
        {
          "locale": "nl-NL",
          "name": "NU"
        },
        {
          "locale": "pl-PL",
          "name": "TERAZ"
        },
        {
          "locale": "pt-BR",
          "name": "AGORA"
        },
        {
          "locale": "pt-PT",
          "name": "AGORA"
        },
        {
          "locale": "ro-RO",
          "name": "NOW"
        },
        {
          "locale": "ru-RU",
          "name": "ТДАТА"
        },
        {
          "locale": "sk-SK",
          "name": "NOW"
        },
        {
          "locale": "sl-SI",
          "name": "NOW"
        },
        {
          "locale": "sr-Latn-RS",
          "name": "NOW"
        },
        {
          "locale": "sv-SE",
          "name": "NU"
        },
        {
          "locale": "th-TH",
          "name": "NOW"
        },
        {
          "locale": "tr-TR",
          "name": "ŞİMDİ"
        },
        {
          "locale": "uk-UA",
          "name": "NOW"
        },
        {
          "locale": "vi-VN",
          "name": "NOW"
        },
        {
          "locale": "zh-CN",
          "name": "NOW"
        },
        {
          "locale": "zh-HK",
          "name": "NOW"
        },
        {
          "locale": "zh-TW",
          "name": "NOW"
        }
      ],
      "signature": {
        "display": "NOW()",
        "parameters": [],
        "trailing_repeats": false
      },
      "surface_name": "NOW",
      "version_marker": null,
      "xlcall": {
        "code": "74",
        "symbol": "xlfNow"
      }
    },
    "microsoft": "https://support.microsoft.com/en-us/office/now-function-3337fd29-145a-4347-b2e6-20c904739c46"
  },
  "try_it": {
    "formula": "=NOW()"
  },
  "url": "https://handbook.dnacalc.com/functions/NOW.html",
  "variants": [],
  "versions": []
}