Created
October 8, 2015 14:50
-
-
Save GSonofNun/8db4811ce1523e1920ff to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class UnixDateTimeConverter : DateTimeConverterBase | |
{ | |
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) | |
{ | |
if (reader.TokenType != JsonToken.Integer) | |
{ | |
throw new Exception( | |
String.Format("Unexpected token parsing date. Expected Integer, got {0}.", | |
reader.TokenType)); | |
} | |
var ticks = (long)reader.Value; | |
var date = new DateTime(1970, 1, 1); | |
date = date.AddSeconds(ticks); | |
return date; | |
} | |
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) | |
{ | |
long ticks; | |
if (value is DateTime) | |
{ | |
var epoc = new DateTime(1970, 1, 1); | |
var delta = ((DateTime)value) - epoc; | |
if (delta.TotalSeconds < 0) | |
{ | |
throw new ArgumentOutOfRangeException( | |
"Unix epoc starts January 1st, 1970"); | |
} | |
ticks = (long)delta.TotalSeconds; | |
} | |
else | |
{ | |
throw new Exception("Expected date object value."); | |
} | |
writer.WriteValue(ticks); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment