Mac HFS+ Timestamp Converter — Seconds Since 1904
Old Macs counted time in seconds since January 1, 1904. The convention survives in HFS+ file metadata, Apple Double files, and vintage archives — this converter bridges it with Unix time.
Mac HFS+ timestamp.
Seconds since January 1, 1904 — the classic Macintosh epoch still found in HFS+ file metadata and old Apple archives.
Whole seconds since January 1, 1904, 00:00:00 UTC.
The Macintosh epoch
When the original Macintosh shipped, its clock started at midnight on January 1,1904 — a round number that was exactly 66 years before the Unix epoch. That's the offset: 2082844800 seconds (1904 → 1970).
- HFS+ → Unix:
unix = hfs - 2082844800. - Unix → HFS+:
hfs = unix + 2082844800.
You will meet it in hfs.creation_date / hfs.modified_date fields from forensic tools, in .AppleDouble metadata, and in the resource forks of very old archives.
Example conversions
0→ January 1, 1904 00:00:00 UTC — the very beginning of Mac time.2082844800→ January 1, 1970 00:00:00 UTC — the two epochs meet.3868905600→ August 7, 2026 00:00:00 UTC.
In your own code
- Python:
datetime(1904, 1, 1, tzinfo=timezone.utc) + timedelta(seconds=hfs). - Go:
time.Unix(hfs-2082844800, 0).UTC(). - JavaScript:
new Date((hfs - 2082844800) * 1000).
Gotchas
- 32-bit wrap — classic HFS stored timestamps as unsigned 32-bit seconds, so the format runs out on February 6, 2040 (max
4294967295). - Local vs UTC — early Macs stored local time; HFS+ and this converter treat values as UTC. Values written before ~1990 may be shifted by your machine's historical offset.
- HFS vs HFS+ — both use the 1904 epoch; HFS+ simply extended the fields to 32-bit seconds.
- Not the Apple epoch — modern Apple platforms use Unix time. Only legacy formats use 1904.
Related tools
For the other pre-1970 era used on classic platforms, see theExcel date converter (days since 1900) or theNTP timestamp converter (seconds since 1900).
Related converters
- Full online epoch converter — Unix time with batch conversion and code snippets.
- Unix timestamp to date converter — decode any epoch value into a readable date.
- Date to epoch converter — turn any date string back into a Unix timestamp.
- Milliseconds to epoch converter — for
Date.now()values and high-precision APIs. - Snowflake ID converter — decode Discord and Twitter/X 64-bit IDs.
- LDAP / Active Directory timestamp converter— 100-nanosecond FileTime values.
- GPS time converter — week numbers and seconds-of-week since 1980.
- NTP timestamp converter — seconds since 1900, with the 64-bit packet form.
- .NET DateTime ticks converter — 100-nanosecond ticks since year 1.
- Mac HFS+ timestamp converter — seconds since 1904.
- Excel date converter — OADate serial numbers, days since 1900.