25 lines
908 B
C#
25 lines
908 B
C#
using Newtonsoft.Json;
|
|
using JsonSerializer = Newtonsoft.Json.JsonSerializer;
|
|
|
|
namespace MasstransferCommon.Convert;
|
|
|
|
public class DatetimeConverter : JsonConverter<DateTime>
|
|
{
|
|
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);
|
|
}
|
|
} |