Utf8jsonreader Datetimeoffset Parsing Rfc 3339 !!hot!! (PREMIUM 2024)
if (reader.TokenType == JsonTokenType.PropertyName && reader.GetString() == "created")
public class Event
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";
byte[] jsonUtf8 = Encoding.UTF8.GetBytes(@" ""created"": ""2023-12-01T09:15:30+02:00"" "); Utf8JsonReader reader = new Utf8JsonReader(jsonUtf8); while (reader.Read())
if (reader.TokenType != JsonTokenType.String) throw new JsonException("Expected string token for DateTimeOffset");
| Example | Meaning | |----------------------------------|-----------------------| | 2023-10-05T14:30:00Z | UTC | | 2023-10-05T14:30:00+02:00 | UTC+2 | | 2023-10-05T14:30:00.123-05:00 | UTC-5 with fraction |
DateTimeOffset.TryParse is forgiving. For strict RFC 3339 compliance, use DateTimeOffset.TryParseExact :
if (reader.TokenType == JsonTokenType.PropertyName && reader.GetString() == "created")
public class Event
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";
byte[] jsonUtf8 = Encoding.UTF8.GetBytes(@" ""created"": ""2023-12-01T09:15:30+02:00"" "); Utf8JsonReader reader = new Utf8JsonReader(jsonUtf8); while (reader.Read())
if (reader.TokenType != JsonTokenType.String) throw new JsonException("Expected string token for DateTimeOffset");
| Example | Meaning | |----------------------------------|-----------------------| | 2023-10-05T14:30:00Z | UTC | | 2023-10-05T14:30:00+02:00 | UTC+2 | | 2023-10-05T14:30:00.123-05:00 | UTC-5 with fraction |
DateTimeOffset.TryParse is forgiving. For strict RFC 3339 compliance, use DateTimeOffset.TryParseExact :