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: