using Newtonsoft.Json; using JsonSerializer = Newtonsoft.Json.JsonSerializer; namespace MasstransferCommon.Convert; public class DatetimeConverter : JsonConverter { private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); public override void WriteJson(JsonWriter writer, DateTime value, JsonSerializer serializer) { long timestamp = (long)(value.ToUniversalTime() - UnixEpoch).TotalMilliseconds; writer.WriteValue(timestamp < 0 ? 0 : timestamp); } public override DateTime ReadJson(JsonReader reader, Type objectType, DateTime existingValue, bool hasExistingValue, JsonSerializer serializer) { var value = reader.Value; return long.TryParse(value + "", out var timestamp) ? UnixEpoch.AddMilliseconds(timestamp) : UnixEpoch.AddMilliseconds((long)value); } }