public static bool TryReadDateTime(ref ReadOnlySpan <byte> remaining, out DateTime result, char standardFormat) { if (standardFormat == 'O') { if (!CustomUtf8Parser.TryParseDateTimeOffsetO(remaining, out var dtoResult, out int bytesConsumed, out var kind)) { result = default; return(false); } switch (kind) { case DateTimeKind.Local: result = dtoResult.LocalDateTime; break; case DateTimeKind.Utc: result = dtoResult.UtcDateTime; break; default: result = dtoResult.DateTime; break; } remaining = remaining.Slice(bytesConsumed); } else { if (!Utf8Parser.TryParse(remaining, out result, out int bytesConsumed, standardFormat)) { return(false); } remaining = remaining.Slice(bytesConsumed); } return(true); }
public static bool TryReadDateTimeOffset(ref ReadOnlySpan <byte> remaining, out DateTimeOffset result, char standardFormat) { if (standardFormat == 'O') { if (!CustomUtf8Parser.TryParseDateTimeOffsetO(remaining, out result, out int bytesConsumed, out _)) { return(false); } remaining = remaining.Slice(bytesConsumed); } else { if (!Utf8Parser.TryParse(remaining, out result, out int bytesConsumed, standardFormat)) { return(false); } remaining = remaining.Slice(bytesConsumed); } return(true); }