// 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 DateTimeJsonConverter : JsonConverter { /// public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { Debug.Assert(typeToConvert == typeof(DateTime)); string? str = reader.GetString(); if (str == null) { throw new InvalidDataException("Unable to parse DateTime"); } return DateTime.Parse(str, CultureInfo.CurrentCulture); } /// public override void Write(Utf8JsonWriter writer, DateTime dateTime, JsonSerializerOptions options) { writer.WriteStringValue(dateTime.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ssZ", CultureInfo.CurrentCulture)); } } }