// Copyright Epic Games, Inc. All Rights Reserved. using System.Diagnostics; using System.Globalization; using System.Text.Json; using System.Text.Json.Serialization; namespace HordeServer.Utilities { /// /// Converter for values to JSON /// public class DateTimeOffsetJsonConverter : JsonConverter { /// public override DateTimeOffset Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { Debug.Assert(typeToConvert == typeof(DateTimeOffset)); string? str = reader.GetString(); if (str == null) { throw new InvalidDataException("Unable to parse DateTimeOffset"); } return DateTimeOffset.Parse(str, CultureInfo.InvariantCulture); } /// public override void Write(Utf8JsonWriter writer, DateTimeOffset dateTimeOffset, JsonSerializerOptions options) { writer.WriteStringValue(dateTimeOffset.ToString("o", CultureInfo.InvariantCulture)); } } }