Free Tool

ISO Date String Toolkit

Ah, date strings... Love them or hate them, I'm sure as a web dev you often have to wrestle with them. Here is a fun little installable utility to help you generate ISO date strings (and other wacky formats) for all your dev work needs.

1. Select Date
2. Click to Copy Right Now
ISO 8601 (Full)
JavaScript / MongoDB
ISO 8601 (No Milliseconds)
GraphQL / Go
UTC String (RFC 1123)
HTTP Headers / Cookies
RFC 2822 String
Email Headers / RSS
RFC 3339 String
Modern APIs
Unix Epoch (Milliseconds)
JS Date.now()
Unix Epoch (Seconds)
PHP / Python
Fractional Epoch
Python time.time()
Unix Epoch (Microseconds)
Slack ts / High-Res
Local with Timezone
JS toString()
SQL DateTime
MySQL / SQLite
PostgreSQL Timestamp
Postgres
Ruby Time String
Rails
Unix ctime
C / C++ logs
MongoDB ObjectId Prefix
4-byte Hex Timestamp
Browser Local String
Intl API
Compact Date
Banking / EDI
Active Directory / LDAP
Windows NT Time
Apple Core Data
iOS / macOS
AWS API Format
ISO 8601 Basic
Excel Serial Date
Spreadsheets / CSV
Julian Date
Astronomy / Legacy DB
Common Log Format
Apache / NGINX
Discord Timestamp
Discord Apps
Discord Snowflake Prefix
Distributed DBs
Golang time.Now()
Go
.NET DateTime Ticks
C# / Unity
Classic Syslog
Linux / Unix
Oracle Database
Enterprise
GPS Time
Aviation / Space
US Standard Date
en-US
Korean Standard Date
ko-KR
Korean Dangun Era
단기 (Dan-gi)
Taiwanese Minguo Date
zh-TW (ROC)
Japanese Imperial Date
ja-JP (Gengou)
Islamic (Hijri) Date
ar-SA (Umm al-Qura)
Thai Buddhist Date
th-TH (Buddhist)
Swatch Internet Time
.beat time
Mayan Long Count
Ancient Maya
Star Trek Stardate
Kelvin Timeline
French Republican Time
Decimal Time
Dune Imperial Calendar
Arrakis Standard
Base-Alpha Progressian
Pure Alpha

Everything You've Ever Wanted to Know about Date Strings

Why should I use ISO 8601 format?

ISO 8601 is the internationally accepted way to represent dates and times. It looks like YYYY-MM-DDTHH:mm:ss.sssZ. The brilliant thing about it is that it's completely unambiguous. When you are building a PWA or sending data to a backend server, using ISO strings guarantees that timezone conversions won't accidentally shift your dates around.

What is a Unix Epoch timestamp?

A Unix timestamp is simply the number of seconds (or milliseconds) that have elapsed since January 1, 1970 at midnight UTC. Since it is just a plain number, it is incredibly efficient for sorting database entries, comparing past and future events, or caching data securely.

Why do developers need date strings so often?

Time is the ultimate axis on which almost all software operates. Every time a user logs in, a payment is processed, an authentication token expires, or a database record is updated, the exact moment must be captured. But computers don't natively understand "next Tuesday" or "after lunch"; they understand strict text and numbers. Developers constantly need to translate human time into standardized machine formats, e.g. like ISO 8601 strings or Unix timestamps, so that a server in Frankfurt and a mobile app in Tokyo can perfectly agree on exactly when an event occurred. Without precise, standardized date strings, chronological feeds scramble, caching logic fails, scheduled background jobs break, and reading server logs to debug an issue becomes practically impossible.

Should I use seconds or milliseconds for my timestamps?

This usually depends on your backend language. In JavaScript, Date.now() returns milliseconds by default (a 13-digit number). However, languages like PHP, Python, and many older database systems default to seconds (a 10-digit number). You can grab both variations from the toolkit above.

How does my local timezone affect these strings?

JavaScript relies on your machine's local timezone. So if you pick "Tomorrow at 5:00 PM", it's generating the string for 5:00 PM in your current timezone. However, formats like the ISO string (ending in "Z") and Unix Epoch will always reflect the exact, absolute moment in time globally (UTC). The Local String explicitly reflects your current timezone format.

What's an epoch exactly?

In computer science, an "epoch" is simply a digital "Year Zero", a fixed, arbitrary starting line from which a system begins counting time. Because computers are terrible at dealing with human calendar quirks like leap years and irregular month lengths, it is much easier for them to just count the total number of seconds (or milliseconds) that have passed since a specific moment. The most famous is the Unix Epoch (Midnight UTC on January 1, 1970), but practically every tech giant has their own. Apple's Core Data uses January 1, 2001, Microsoft's Active Directory goes all the way back to January 1, 1601, and GPS satellites started counting in 1980. Whenever you see a massive, incomprehensible number representing a date, you are just looking at a computer counting up from its designated epoch.

Do Unix timestamps account for leap seconds?

Interestingly, no. Because the Earth's rotation is slightly irregular and slowing down, scientists occasionally insert a "leap second" to keep our clocks aligned with solar time. Instead of making the Unix epoch track this complex astronomical reality, Unix systems simply repeat a second or mathematically "smear" the extra time over a 24-hour period. This keeps database math simple. For example, every day has exactly 86,400 seconds in Unix land. But it means Unix time isn't a perfectly true measure of elapsed physical time.

Why are there so many different date string formats?

It boils down to a decades-long tug-of-war between human readability, hardware limitations, and corporate ecosystems. In the early days of computing, memory and storage were incredibly expensive, so developers represented time as simple, space-saving numbers (like the Unix epoch). As operating systems and databases evolved, giants like Microsoft, Apple, and Oracle all created their own proprietary "Epochs" and formats optimized for their specific architectures. Meanwhile, logging systems needed human-readable strings, leading to dozens of localized variations. By the time universal standards like ISO 8601 and RFC 3339 were widely agreed upon, billions of lines of legacy code had already been written. Because software must maintain backwards compatibility, we are permanently stuck supporting this massive, chaotic timeline of competing formats.

Why is perfect computer time synchronization an illusion?

In physics, time is relative. In computing, time is an illusion we all loosely agree to uphold. Because of network latency, the speed of light, and microscopic hardware variations causing quartz oscillators to tick at slightly different speeds ("clock drift"), no two computers will ever perfectly agree on the exact nanosecond. Instead of fighting physics, systems manage this using the Network Time Protocol (NTP) to constantly correct drift, or advanced distributed systems like Google's Spanner, which uses atomic clocks to calculate a "window of uncertainty." We don't perfectly synchronize time; we just mathematically agree to be close enough.

What is the Year 2038 Problem (Epochalypse)?

Many legacy computer systems store the Unix epoch timestamp as a 32-bit signed integer. The absolute maximum value this data type can hold is 2,147,483,647. On January 19, 2038, the number of seconds since January 1, 1970 will exceed this limit. When that happens, systems that haven't been upgraded to 64-bit integers will overflow, flipping the internal date back to December 13, 1901. It's essentially the Y2K bug for the Unix world, and it's a major reason why developers are actively migrating legacy infrastructure to 64-bit architectures.

What would date strings look like next to a black hole?

Thanks to Einstein's theory of general relativity, the passage of time is affected by gravity. If you placed a server near the event horizon of a supermassive black hole, the immense gravity would cause severe time dilation. While the server's internal clock would tick normally from its own perspective, relative to a server back on Earth, time would slow to a crawl. If that black hole server sent an API request to Earth with an ISO string or a Date.now() timestamp, the Earth database would perceive the timestamp as being drastically far in the past. You couldn't just use an NTP server to sync them because the literal passage of physical time is actively diverging. It's the ultimate, unsolvable timezone bug!

Your app here

Still wrestling with date strings?

Well, at least with Progressier, you sure as hell won't be wrestling with PWA installation!

Generate PWA See plans