# @rr0/time

> EDTF parsing

Latest version **0.11.3** (published 2026-09-24) · MIT license · 0 weekly downloads

## Install

```sh
npm install @rr0/time
pnpm add @rr0/time
yarn add @rr0/time
bun add @rr0/time
```

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; recently updated; high maintenance score; high quality score.

Warnings: low downloads; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.11.3 |
| Published | 2026-09-24 |
| First published | 2024-09-11 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 318 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 3 |
| Author | RR0 |
| Maintainers | javarome |
| Keywords | EDTF, date, time, parsing, ISO-8601 |

## Links

- npm: https://www.npmjs.com/package/@rr0/time
- Repository: https://github.com/RR0/time
- Homepage: https://github.com/RR0/time#readme
- Issues: https://github.com/RR0/time/issues
- npm.io page: https://npm.io/package/@rr0/time

## Alternatives

- [@js-joda/timezone](https://npm.io/package/@js-joda/timezone.md) — 383.4K weekly downloads
- [chartjs-adapter-moment](https://npm.io/package/chartjs-adapter-moment.md) — 210.8K weekly downloads
- [strftime](https://npm.io/package/strftime.md) — 171.2K weekly downloads
- [vue-flatpickr-component](https://npm.io/package/vue-flatpickr-component.md) — 115.8K weekly downloads
- [timepicker](https://npm.io/package/timepicker.md) — 51.0K weekly downloads

## Recent versions

- 0.11.3 (latest) — 2026-09-24
- 0.11.2 — 2026-01-11
- 0.11.1 — 2025-05-02
- 0.11.0 — 2025-02-24
- 0.10.0 — 2025-02-20
- 0.9.2 — 2025-02-17
- 0.9.1 — 2025-02-14
- 0.9.0 — 2025-02-14
- 0.8.11 — 2025-02-14
- 0.8.10 — 2025-02-14
- 0.8.9 — 2025-02-14
- 0.8.8 — 2025-02-13
- 0.8.7 — 2025-02-13
- 0.8.6 — 2025-02-13
- 0.8.5 — 2025-02-10
- … 35 more at https://npm.io/package/@rr0/time/versions

## README

# @rr0/time [![CircleCI](https://dl.circleci.com/status-badge/img/gh/RR0/time/tree/master.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/gh/RR0/time/tree/master)

Zero-dependency JavaScript API for managing fuzzy dates.

This package implements [EDTF](https://www.loc.gov/standards/datetime/) (levels 0, 1 and 2), 
which extended over the [ISO-8601](https://www.iso.org/iso-8601-date-and-time-format.html) standard to add fuzziness, 
and was eventually integrated in [ISO 8601-2019](https://www.iso.org/obp/ui/#iso:std:iso:8601:-1:ed-1:v1:en).

By fuzziness, we mean:
- **uncertainty** (`?`), like "maybe June 2025"
- **(im)precision** (`X`), to express that some date has missing component(s) info 
- **approximation** (`~`), like "around June 2025"
- **both** (`%`), like "maybe around June 2025"

| EDTF           | ISO Standard             | Contents                                                                                                      |
|----------------|--------------------------|---------------------------------------------------------------------------------------------------------------|
| Level 0 (2012) | ISO-8601-1 (Basic rules) | Dates, intervals, but no fuzziness                                                                            |
| Level 1 (2016) | ISO-8601-2 (Extensions)  | Date part fuzziness, open intervals, seasons, big years                                                       |
| Level 2 (2019) | ISO-8601-2 (Extensions)  | Per-component date fuzziness, digits uncertainty, extended seasons w/ quarters, dates sets, exponential years |
| Level 3        | ISO-8601-3               | Seasons intervals                                                                                             |

Accordingly, this API is split in level-specific sub-packages. 

You can use `Level0Date` only for instance, but using `Level2Date` will implicitly rely on `Level1Date` which implicitly rely on `Level0Date`,
as each of those standards are extending one on another.


## Data types
This package supports fuzziness/no fuzziness for:
- **[Dates](https://github.com/RR0/time/wiki/Date)**
- **[Date components](https://github.com/RR0/time/wiki/DateComponent)** (year, month, day, hour, minute, second, timeshift), each of these referencing a **Unit**
- **[Intervals](https://github.com/RR0/time/wiki/Interval)** between two dates
- **[Durations](https://github.com/RR0/time/wiki/Duration)**

## Features
Each data type can be:
- **instantiated** programmatically (like `new EdtfDate({year: 2024, month: 8, day: 25, uncertain: true})`);
- **parsed** from EDTF strings by default (like `EdtfDate.fromString("2024-08-25~")`), but you can use your own parser;
- **rendered** in EDTF format by default (like `edtfDate.toString()`), but you can use your own renderer, to render in some language words for instance.

## Examples
The examples below apply for both JavaScript and TypeScript.

### Parsing

Dates, date components (year, month, etc.), intervals or durations can be instantiated `fromString`.

### Programmatic API

Dates, date components (year, month, etc.), intervals or durations can be instantiated through their own constructors.

See details in [the Wiki](https://github.com/RR0/time/wiki).

---
_Source: https://npm.io/package/@rr0/time · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
