using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System; namespace uEvents.Meetup { /// /// http://stackapps.com/questions/1175/how-to-convert-unix-timestamp-to-net-datetime/1176#1176 /// /// Useful when serializing/deserializing json for use with the Stack Overflow API, which produces and consumes Unix Timestamp dates /// /// /// swiped from lfoust and fixed for latest json.net with some tweaks for handling out-of-range dates /// public class UnixDateTimeConverter : DateTimeConverterBase { /// /// Writes the JSON representation of the object. /// /// The to write to.The value.The calling serializer. public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { long val; if (value is DateTime) { val = ((DateTime)value).ToUnixTime(); } else { throw new Exception("Expected date object value."); } writer.WriteValue(val); } /// /// Reads the JSON representation of the object. /// /// The to read from. /// Type of the object. /// The existing value of object being read. /// The calling serializer. /// The object value. public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType != JsonToken.Integer) throw new Exception("Wrong Token Type"); var ticks = (long)reader.Value; return ticks.FromUnixTime(); } } }