# Anniversary Calculator

> Counts completed years, months and days since a start date (wedding, job, founding), finds the next anniversary date and the days until it, and names the traditional anniversary gift material for that year.

- Calculator id: `anniversary` · Category: Time & Geography (`time`) · Tool name: `calculate_anniversary`
- Canonical page: https://tttkmbb.com/time/anniversary · This document: https://tttkmbb.com/time/anniversary.md · JSON definition: https://tttkmbb.com/time/anniversary.json

## Purpose

Counts completed years, months and days since a start date (wedding, job, founding), finds the next anniversary date and the days until it, and names the traditional anniversary gift material for that year.

**Use when:** You want to know which anniversary is coming up, how many days remain until it, or the traditional gift for a given anniversary year.

**Do not use when:** You need someone's age (use age) or a general date difference with business days (use date-difference).

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `start_date` | date |  | required | Date of the original event (YYYY-MM-DD), e.g. the wedding date. |
| `as_of_date` | date |  | optional, default "today" | Reference date; defaults to the current UTC date. |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `years_completed` | integer | years | Full years elapsed on as_of_date. |
| `elapsed_text` | string |  | Years, months and days since start_date. |
| `days_since_start` | integer | days | as_of_date − start_date. |
| `next_anniversary_date` | date |  | First anniversary date on or after as_of_date (29 February → 1 March in common years). |
| `next_anniversary_number` | integer |  | Ordinal of the next anniversary (e.g. 12 for the 12th). |
| `next_anniversary_weekday` | string |  | Day of the week of the next anniversary. |
| `days_until_next_anniversary` | integer | days | 0 when as_of_date is the anniversary itself. |
| `is_anniversary_today` | boolean |  | true when as_of_date is an anniversary of start_date. |
| `traditional_gift` | string |  | Traditional gift material for the next anniversary year (years 1–15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 70). |

## Formula

`years_completed = calendar years from start_date to as_of_date; next_anniversary = first (month, day) of start_date on or after as_of_date; days_until = next_anniversary − as_of_date`

Gregorian calendar arithmetic in UTC. Gift materials follow the common US/UK traditional list (paper, cotton, leather … silver at 25, gold at 50, diamond at 60); years without a traditional material return a note instead.

## Data Sources

- Wedding anniversary – traditional gift lists (Wikipedia) — https://en.wikipedia.org/wiki/Wedding_anniversary (reference, retrieved 2026-09-24)
- Gregorian calendar – leap-year rule and month lengths (Wikipedia) — https://en.wikipedia.org/wiki/Gregorian_calendar (reference, retrieved 2026-09-24)

Data freshness: `daily` (max_age_seconds 86400). Depends on the current date unless the date is supplied.

## API

- `GET https://tttkmbb.com/api/v1/calculate/anniversary?start_date=…`
- `POST https://tttkmbb.com/api/v1/calculate/anniversary` with JSON body `{"inputs": {…}}`
- Response: unified envelope (`success`, `request`, `result.values`, `result.units`, `sources`, `freshness`, `timestamp`, `next_actions`, `links`); see https://tttkmbb.com/docs/response-format.md
- Schema: https://tttkmbb.com/api/v1/calculators/anniversary · OpenAPI operationId `calculate_anniversary` in https://tttkmbb.com/openapi.json
- Authentication: none. Rate limit: fair use, see https://tttkmbb.com/docs/rate-limits.md.

## MCP

- Server: `https://tttkmbb.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no auth)
- Tool:  `run_calculator` with `{"calculator_id": "anniversary", "inputs": {…}}`

## Example

- Wedding 2015-06-20, as of 2026-09-23: inputs `{"start_date":"2015-06-20","as_of_date":"2026-09-23"}` → `{"years_completed":11,"elapsed_text":"11 years 3 months 3 days","days_since_start":4113,"next_anniversary_date":"2027-06-20","next_anniversary_number":12,"next_anniversary_weekday":"Sunday","days_until_next_anniversary":270,"is_anniversary_today":false,"traditional_gift":"Silk"}`
- Silver wedding: 1999-02-14 as of 2024-02-14: inputs `{"start_date":"1999-02-14","as_of_date":"2024-02-14"}` → `{"years_completed":25,"days_since_start":9131,"next_anniversary_date":"2024-02-14","next_anniversary_number":25,"days_until_next_anniversary":0,"is_anniversary_today":true,"traditional_gift":"Silver"}`

```
GET https://tttkmbb.com/api/v1/calculate/anniversary?start_date=2015-06-20&as_of_date=2026-09-23
```

## Limitations

You need someone's age (use age) or a general date difference with business days (use date-difference). Gregorian calendar arithmetic in UTC. Gift materials follow the common US/UK traditional list (paper, cotton, leather … silver at 25, gold at 50, diamond at 60); years without a traditional material return a note instead. All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**Which anniversary does the gift refer to?**

The next one: on 2026-09-23 a couple married on 2015-06-20 has completed 11 years, so the upcoming 12th anniversary (silk) is reported. On the anniversary day itself that day's number is used.

**Are modern gift lists included?**

No; only the traditional materials. Modern lists (clocks, china, crystal, appliances…) vary by country and retailer.

## Related

- [Age Calculator](https://tttkmbb.com/everyday/age.md) — The same calculation for a person's birthday.
- [Days Until Calculator](https://tttkmbb.com/everyday/days-until.md) — Countdown to any date.
- [Date Difference Calculator](https://tttkmbb.com/everyday/date-difference.md) — Exact difference between two dates including business days.
