Skip to content

Instantly share code, notes, and snippets.

@kyrylomyr
Created November 26, 2019 08:32
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kyrylomyr/5452d900d8c5fc63cca7bcea69e57597 to your computer and use it in GitHub Desktop.
Save kyrylomyr/5452d900d8c5fc63cca7bcea69e57597 to your computer and use it in GitHub Desktop.
An implementation of JSON converter between Unix's timestamp in milliseconds and .NET's DateTime for Json.NET
public class UnixMillisDateTimeConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value == null)
{
writer.WriteNull();
return;
}
var dateTime = (DateTime)value;
var offset = new DateTimeOffset(dateTime);
var unixTimestamp = offset.ToUnixTimeMilliseconds();
writer.WriteValue(unixTimestamp);
}
public override object ReadJson(JsonReader reader, Type type, object value, JsonSerializer serializer)
{
if (reader.Value == null)
{
return type == typeof(DateTime?) ? (object)null : DateTime.MinValue;
}
long epoch;
if (reader.ValueType == typeof(long))
{
epoch = (long)reader.Value;
}
else
{
epoch = long.Parse((string)reader.Value);
}
var offset = DateTimeOffset.FromUnixTimeMilliseconds(epoch);
return offset.DateTime;
}
public override bool CanConvert(Type type)
{
return type == typeof(DateTime) || type == typeof(DateTime?);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment