Skip to content
Back to the journal

Your recap

Choose a reporting timezone before assigning recap months

Reproduce year-end, month-end and repeated-hour cases while preserving original timestamps and the actual product collection window.

The short answer

Choose and name the reporting timezone before grouping absolute timestamps into days, months or years. Keep original timestamps and offsets. A local clock reading without a known zone is not enough to infer an instant, and changing report labels does not change Wrapped.li’s actual collection window.

What you’ll take away

  • An absolute instant can belong to different calendar dates in different zones.
  • A repeated local hour can contain two different instants.
  • Timezone conversion cannot recover missing history or change product coverage.

Choose the calendar that answers your question

A creator’s local publishing day and a consistently UTC monthly audit are different reporting choices. Choose one deliberately and state it in the caption and working record. Keep the same definition for comparisons; switching calendars near a boundary can move a post between months without any activity changing.

Preserve the source timestamp, its offset evidence and the transformed reporting date separately. If a source supplies only a date with no time or zone, retain that precision. Do not append Z to a local reading to make it look complete; Z asserts UTC.

Reproduce the year-boundary case

The constructed instant 2025-12-31T23:30:00Z is December 31 in UTC and New York, but January 1, 2026 at 00:30 in Berlin under the reproduced timezone rules. The same instant may therefore enter different calendar-year groups. It is not a second post or a change in publication time.

For your own grouping, define a start-inclusive, end-exclusive window in the chosen reporting calendar, then compare actual instants consistently. Do not implement “one year” as a convenient fixed number of days or silently inherit the machine’s local timezone.

A summer-time month boundary changes the date

At 2026-03-31T22:30:00Z, Berlin’s reproduced local time is April 1 at 00:30 with offset +02:00. The UTC date remains March 31. Reusing a winter offset of +01:00 would assign the wrong local date here.

Use the named zone Europe/Berlin with a timezone-aware formatter rather than a hard-coded offset for all dates. For historical or future work, preserve the runtime and timezone database version used; rule changes or a different database can require a fresh review.

Two 02:30 readings can be an hour apart

The constructed instants 2026-10-25T00:30:00Z and 2026-10-25T01:30:00Z both format to 02:30 in Berlin. Their offsets are +02:00 and +01:00 respectively, and the instants are 60 minutes apart. Deduplicating on the local clock string would erase a distinct observation.

Keep the absolute timestamp or offset-bearing representation as the identity for time comparisons. A local 02:30 without zone/offset evidence cannot tell you which of these two instants was intended. Hold ambiguous rows separately until the source supplies enough information.

Run all four original fixtures

The complete packet includes calendar-boundaries.json and a local Node.js checker. Run node reproduce-examples.mjs after unzipping with Node.js 22 or newer already installed. It uses Intl.DateTimeFormat with an explicit named zone and formatToParts, then checks dates, repeated hour, offsets and elapsed time.

The recorded local run used Node 24.21.0, ICU 78.3 and timezone data 2026c. These are reproduction details, not a requirement to upgrade your system or proof of every timezone rule. The checker makes no network request and uses constructed absolute timestamps only.

Keep reporting labels separate from collection coverage

Complete the calendar record with the original precision, chosen zone, boundaries, ambiguous rows and actual source coverage. When a report lacks older or private activity, assigning a different timezone cannot recover it. Changing a display month also does not extend Wrapped.li’s product collection window or establish all-year completeness.

A useful conclusion names both choices: “These collected observations are grouped by Europe/Berlin calendar month; source coverage remains the stated collection.” That preserves a reader’s ability to compare months while keeping the product’s actual limits visible.

Sources & product references

Product details reflect the publication date. External features and interfaces may change.

WRAPPED.LI

Your year has a story. Find yours.

Explore your available activity, see the people behind it, and choose what to share.

Create my recapStart with a free profile preview. Premium is optional.
Wrapped.li editorial

Product guidance from Wrapped.li. Numerical examples are illustrative, not customer results. LinkedIn is a separate company.