Utf8jsonreader Datetimeoffset Parsing Rfc 3339 May 2026

DateTimeOffset.TryParse is forgiving. For strict RFC 3339 compliance, use DateTimeOffset.TryParseExact :

byte[] jsonUtf8 = Encoding.UTF8.GetBytes(@" ""created"": ""2023-12-01T09:15:30+02:00"" "); Utf8JsonReader reader = new Utf8JsonReader(jsonUtf8); while (reader.Read()) utf8jsonreader datetimeoffset parsing rfc 3339

public static DateTimeOffset ParseRfc3339Strict(ref Utf8JsonReader reader) DateTimeOffset

ReadOnlySpan<byte> utf8Span = reader.ValueSpan; Span<char> buffer = stackalloc char[utf8Span.Length]; int chars = Encoding.UTF8.GetChars(utf8Span, buffer); ReadOnlySpan<char> dateStr = buffer.Slice(0, chars); Utf8JsonReader reader = new Utf8JsonReader(jsonUtf8)

DateTimeOffset dto = reader.GetDateTimeOffsetRfc3339();

throw new JsonException("Invalid RFC 3339 format");

✅ Works because the built-in DateTimeOffsetConverter handles RFC 3339. When reading token-by-token and encountering a JsonTokenType.String that contains an RFC 3339 date: