Utf8jsonreader Datetimeoffset Parsing | Rfc 3339 New!
if (DateTimeOffset.TryParse(dateStr, CultureInfo.InvariantCulture, out var dto)) return dto;
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) if (DateTimeOffset
if (reader.TokenType == JsonTokenType.PropertyName && reader.GetString() == "created") out var dto)) return dto
if (DateTimeOffset.TryParse(dateString, out DateTimeOffset dto)) return dto;
✅ RFC 3339 requires T separator, : in offset, optional fraction. public static class Utf8JsonReaderExtensions
// 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;
