Parsing Rfc 3339 | Utf8jsonreader Datetimeoffset

// Fallback: manual strict parsing ReadOnlySpan<byte> span = reader.ValueSpan; Span<char> chars = stackalloc char[span.Length]; int len = Encoding.UTF8.GetChars(span, chars); if (DateTimeOffset.TryParseExact(chars.Slice(0, len), "yyyy-MM-dd'T'HH:mm:ss.FFFFFFFK", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out dto)) return dto;

If you need UTC normalization:

DateTimeOffset preserves offset.

string dateString = reader.GetString();

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 datetimeoffset parsing rfc 3339

using System; using System.Text.Json; using System.Text.Json.Serialization; // for JsonException public static DateTimeOffset ParseDateTimeOffsetFromReader(ref Utf8JsonReader reader) // Fallback: manual strict parsing ReadOnlySpan&lt

if (reader.TokenType != JsonTokenType.String) throw new JsonException("Expected string token"); string s = reader.GetString(); const string rfc3339Pattern = "yyyy-MM-dd'T'HH:mm:ss.FFFFFFFK"; span = reader.ValueSpan