Staaarter

Truncate a Calendar Date

Truncates a YYYY-MM-DD calendar date down to a coarser precision, either the first day of its month or the first day of its year, useful for grouping dates into buckets for reports and charts. A free online tool from Staaarter, right in your browser.

Runs locallyUpdated 2026-08-05
By Staaarter Team
datecalendar

Overview

Introduction

Grouping data by month or year is one of the most common date operations in reporting, and it usually starts with rounding every date down to the start of its bucket.

This tool does that rounding for a single date at a time: give it a date and the precision you want to keep, and it returns the truncated result.

What Is Truncate a Calendar Date?

A small date-flooring utility that takes a YYYY-MM-DD date and a precision, either "year" or "month", and returns the first day of that period.

It performs no timezone conversion or relative math, it only rewrites the day (and month, if truncating to a year) component of the date you supply.

How Truncate a Calendar Date Works

The input is split into two lines, the date and the precision, and each is validated independently: the date against a strict YYYY-MM-DD pattern with real calendar-day bounds, the precision against the literal strings "year" or "month".

For "month", the day is replaced with 01. For "year", both the month and day are replaced with 01, leaving only the year.

When To Use Truncate a Calendar Date

Use it when preparing data for a monthly or yearly report and you need every date snapped to the start of its bucket before grouping.

It's also handy for quickly answering "what's the first of this month/year" for a specific date without doing the arithmetic by hand.

Features

Advantages

  • Explicit calendar-day validation means an invalid date like February 30th is caught rather than silently rolled over.
  • Deterministic, always-down rounding with no ambiguity about which direction it rounds.
  • Output stays a valid full date, ready to feed into another date-aware tool.

Limitations

  • Only two precisions are supported, month and year, there's no truncation to week or quarter.
  • Processes one date at a time, it does not batch a list of dates.

Examples

Truncating to the start of the month

Input

2026-08-05
month

Output

2026-08-01

The day is rounded down to 01 while the year and month stay the same.

Truncating to the start of the year

Input

2026-08-05
year

Output

2026-01-01

Both the month and day are rounded down to 01, leaving only the year.

Best Practices & Notes

Best Practices

  • Keep the date on the first line and the precision on the second, extra blank lines are trimmed automatically but the order matters.
  • Use "month" truncation when building monthly reports and "year" truncation when building yearly ones, rather than truncating twice.

Developer Notes

Validation reuses the standard Gregorian day-count table with an explicit leap-year check ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) rather than constructing a JS Date and reading back a possibly-rolled-over value, so an out-of-range day is always caught before any truncation happens.

Truncate a Calendar Date Use Cases

  • Bucketing transaction dates by month before summing totals in a spreadsheet
  • Normalizing a birthdate to just its year for age-bracket analysis
  • Preparing a date column for a monthly or yearly chart axis

Common Mistakes

  • Swapping the two input lines, the date must come first and the precision second.
  • Typing a precision other than exactly "year" or "month" (the check is case-insensitive but the word itself must match).

Tips

  • Pair this with Calendar Date Validator first if you're unsure whether a date is well-formed before truncating it.
  • Feed the truncated output straight into Calendar Date Sorter when bucketing and then ordering a list of dates.

References

Frequently Asked Questions