International standards for dates and times
ISO 8601 - Wikipedia
ISO 8601 is an international standard covering the worldwide exchange and communication of date and time-related data. It is maintained by the International Organization for Standardization (ISO) and was first published in โ€ฆ Wikipedia
Factsheet
Date in UTC 2026-04-02
Time in UTC 00:44:29Z
T004429Z
Date and time in UTC 2026-04-02T00:44:29Z
20260402T004429Z
Factsheet
Date in UTC 2026-04-02
Time in UTC 00:44:29Z
T004429Z
Date and time in UTC 2026-04-02T00:44:29Z
20260402T004429Z
๐ŸŒ
Wikipedia
en.wikipedia.org โ€บ wiki โ€บ ISO_8601
ISO 8601 - Wikipedia
2 weeks ago - ISO 8601 applies to these representations and formats: dates, in the Gregorian calendar (including the proleptic Gregorian calendar); times, based on the 24-hour timekeeping system, with optional UTC offset, time intervals, and combinations thereof. The standard does not assign specific meaning to any element of the dates/times represented: the meaning of any element depends on the context of its use.
๐ŸŒ
ISO
iso.org โ€บ iso-8601-date-and-time-format.html
ISO - ISO 8601 โ€” Date and time format
ISO 8601 is the internationally accepted way to represent dates and times.
People also ask

What datetime formats are supported?
Timezone Hub supports ISO 8601, RFC3339, Unix timestamps (seconds and milliseconds), and custom datetime formats. You can also use human-readable formats for easy copying.
๐ŸŒ
timezonehub.dev
timezonehub.dev โ€บ utc โ€บ iso
Timezone Hub - Convert & Format Datetimes Instantly
Can I convert timezones in Excel or CSV files?
Yes! Use the Spreadsheet tab to upload CSV or Excel files. Specify the column containing timestamps, select source and target timezones, and download the converted file. All processing happens in your browser for privacy.
๐ŸŒ
timezonehub.dev
timezonehub.dev โ€บ utc โ€บ iso
Timezone Hub - Convert & Format Datetimes Instantly
How do I convert timezones?
Use Timezone Hub's Converter tab to convert times between any two timezones. Select your source and target timezones, enter a datetime, and get instant conversion. Supports ISO 8601, RFC3339, Unix timestamps, and custom formats.
๐ŸŒ
timezonehub.dev
timezonehub.dev โ€บ utc โ€บ iso
Timezone Hub - Convert & Format Datetimes Instantly
๐ŸŒ
Timezone Hub
timezonehub.dev โ€บ utc โ€บ iso
Timezone Hub - Convert & Format Datetimes Instantly
November 9, 2025 - Instantly convert and format datetimes worldwide. Use this UTC now online timezone converter for ISO 8601, RFC3339, and Unix datetime formats.
๐ŸŒ
Python documentation
docs.python.org โ€บ 3 โ€บ library โ€บ datetime.html
datetime โ€” Basic date and time types
Return a date corresponding to a date_string given in any valid ISO 8601 format, with the following exceptions: Reduced precision dates are not currently supported (YYYY-MM, YYYY).
Top answer
1 of 1
40

No, not OK

No, the Z is an offset-from-UTC. So it should not be combined redundantly with a numerical offset of +00:00 or +0000.

ISO 8601

While I do not have access to a paid copy of the ISO 8601 spec, the Wikipedia page clearly states that the Z must follow the time-of-day:

โ€ฆadd a Z directly after the time without a space.

IETF RFC 3339

The freely-available RFC 3339, a profile of ISO 8601, defines a Z as being attached to a time-of-day:

A suffix โ€ฆ applied to a time โ€ฆ

The RFC also states with formal ABNF notation that we should use either a Z or a number. In ABNF, the slash (SOLIDUS) means โ€œorโ€ (exclusive โ€˜orโ€™), while the pair of square brackets means โ€œoptionalโ€.

time-numoffset = ("+" / "-") time-hour [[":"] time-minute]

time-zone = "Z" / time-numoffset

Furthermore, section 5.4 of the spec specifically recommends against including redundant information.

Java

The modern java.time classes built into Java use the standard ISO 8601 formats by default when parsing/generating strings. See Oracle Tutorial.

Parsing text input

With Z:

Instant instant = Instant.parse( "2019-01-23T12:34:56.123456789Z" ) ;

With +00:00:

OffsetDateTime odt = OffsetDateTime.parse( "2019-01-23T12:34:56.123456789+00:00" ) ;

Generating text output

To create a string with the Z, simply call Instant::toString.

String output = Instant.now().toString() ;  // Capture the current moment in UTC, then generate text representing that value in standard ISO 8601 using the `Z` offset-indicator.

2019-05-22T21:00:52.214709Z

To create a string with the 00:00, call OffsetDateTime::format. Generate text using a DateTimeFormatter with a formatting pattern you define.

DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd'T'HH:mm:ss.SSSxxx" ) ;
String output = OffsetDateTime.now( ZoneOffset.UTC ).format( f ) ;

2019-05-22T21:00:52.319076+00:00

Truncating

You may want to truncate any microseconds or nanoseconds.

Instant
.now()
.truncatedTo( ChronoUnit.MILLIS )
.toString()

2019-05-22T21:11:28.970Z

โ€ฆandโ€ฆ

OffsetDateTime
.now( ZoneOffset.UTC )
.truncatedTo( ChronoUnit.MILLIS )
.format( 
    DateTimeFormatter.ofPattern( "uuuu-MM-dd'T'HH:mm:ss.SSSxxx" )
)

2019-05-22T21:11:29.078+00:00

See this code running live at IdeOne.com.

Never use 'Z'

Never use 'Z' with the quote marks in your formatting pattern.

The pair of single-quote marks turns the Z into a string literal, mere decoration, rather than a meaningful pattern code.

๐ŸŒ
Microsoft Learn
learn.microsoft.com โ€บ en-us โ€บ rest โ€บ api โ€บ storageservices โ€บ formatting-datetime-values
Formatting DateTime values (REST API) - Azure Storage | Microsoft Learn
June 27, 2023 - Azure Storage DateTime values must be represented as combined Coordinated Universal Time (UTC) values. UTC formats are described by ISO 8601.
Find elsewhere
๐ŸŒ
Digi
docs.digi.com โ€บ resources โ€บ documentation โ€บ digidocs โ€บ 90001488-13 โ€บ reference โ€บ r_iso_8601_date_format.htm
ISO 8601 date format
Every component shown in the example below must be present when expressing a date in ISO 8601 format; this includes all punctuation characters and the "T" character. Within a string, the "T" indicates the beginning of the time element (directly following the date element).
๐ŸŒ
Spring
docs.spring.io โ€บ spring-framework โ€บ docs โ€บ current โ€บ javadoc-api โ€บ org โ€บ springframework โ€บ format โ€บ annotation โ€บ DateTimeFormat.ISO.html
DateTimeFormat.ISO (Spring Framework 7.0.5 API)
The most common ISO Date Time Format yyyy-MM-dd'T'HH:mm:ss.SSSXXX โ€” for example, "2000-10-31T01:30:00.000-05:00". public static final DateTimeFormat.ISO NONE ยท Indicates that no ISO-based format pattern should be applied. public static DateTimeFormat.ISO[] values() Returns an array containing ...
๐ŸŒ
Medium
medium.com โ€บ towardsdev โ€บ iso-8601-1-understanding-date-and-time-formatting-f8dd70e89552
ISO 8601โ€“1: Understanding Date and Time Formatting
March 5, 2025 - import java.time.ZonedDateTime import java.time.format.DateTimeFormatter fun main() { val now = ZonedDateTime.now() val formattedDate = now.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME) println("Formatted Date-Time: $formattedDate") } // Sample Output // Formatted Date-Time: 2025-03-04T09:59:56.832948787Z
๐ŸŒ
Microsoft Learn
learn.microsoft.com โ€บ en-us โ€บ dotnet โ€บ standard โ€บ base-types โ€บ standard-date-and-time-format-strings
Standard date and time format strings - .NET | Microsoft Learn
For TimeOnly values, it produces a time-only ISO 8601 string in the format "HH:mm:ss.fffffff". The "O" or "o" standard format specifier corresponds to the "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK" custom format string for DateTime values and to the "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz" custom format string for DateTimeOffset values.
๐ŸŒ
Oracle
docs.oracle.com โ€บ en โ€บ database โ€บ oracle โ€บ oracle-database โ€บ 21 โ€บ adjsn โ€บ iso-8601-date-time-and-duration-support.html
ISO 8601 Date, Time, and Duration Support
December 6, 2022 - International Standards Organization (ISO) standard 8601 describes an internationally accepted way to represent dates, times, and durations. Oracle Database supports the most common ISO 8601 formats as proper Oracle SQL date, time, and interval (duration) values.
๐ŸŒ
Celigo
docs.celigo.com โ€บ hc โ€บ en-us โ€บ articles โ€บ 360014902132-Format-date-and-time-in-ISO8601
Format date and time in ISO8601 โ€“ Celigo Help Center
The table below provides examples of date/time formats to help you select or enter the appropriate format. Date/Time Format Example 1 Example 2 April 1st, 2018 3:20:15 pm PDT October 21...
๐ŸŒ
MathWorks
mathworks.com โ€บ matlabcentral โ€บ answers โ€บ 1822898-timestamp-in-iso-8601-to-yyyy-mm-dd-hh-mm-ss
Timestamp in ISO 8601 to yyyy-MM-dd HH:mm:ss - MATLAB Answers - MATLAB Central
October 11, 2022 - Timestamp in ISO 8601 to yyyy-MM-dd HH:mm:ss. Learn more about timestamp, matlab, iso8601, datetime, convertfrom MATLAB
๐ŸŒ
W3C
w3.org โ€บ TR โ€บ NOTE-datetime
Date and Time Formats
This profile defines a few date/time formats, likely to satisfy most requirements. The International Standard for the representation of dates and times is ISO 8601. Its full reference number is ISO 8601 : 1988 (E), and its title is "Data elements and interchange formats - Information interchange ...
๐ŸŒ
Srcco
srcco.de โ€บ posts โ€บ date-formats-iso-8601.html
Date Formats: ISO 8601 | SRCco.de
June 30, 2020 - For Python programmers: the Python standard library supports parsing and formatting ISO date/time natively since Python 3.7: import datetime # dates d = datetime.date.fromisoformat("2020-06-30") d.isoformat() # => 2020-06-30 # date/time (without timezone) dt = datetime.datetime.fromisoformat("2020-06-30T20:41:26.538088") dt.isoformat() # => 2020-06-30T20:41:26.538088 ยท
๐ŸŒ
MDN Web Docs
developer.mozilla.org โ€บ en-US โ€บ docs โ€บ Web โ€บ JavaScript โ€บ Reference โ€บ Global_Objects โ€บ Date
Date - JavaScript | MDN
toISOString() returns a string in the format 1970-01-01T00:00:00.000Z (the date time string format introduced above, which is simplified ISO 8601).
๐ŸŒ
MetaCPAN
metacpan.org โ€บ pod โ€บ DateTime::Format::ISO8601
DateTime::Format::ISO8601 - Parses ISO8601 formats - metacpan.org
Parses almost all ISO8601 date and time formats. ISO8601 time-intervals will be supported in a later release. ... Accepts an optional hash. my $iso8601 = DateTime::Format::ISO8601->new( base_datetime => $dt, cut_off_year => 42, legacy_year => 1, );