in src/YouTrackSharp/Json/UnixDateTimeOffsetConverter.cs [30:69]
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
{
return null;
}
long ticks;
// ReSharper disable once SwitchStatementMissingSomeCases
switch (reader.TokenType)
{
case JsonToken.Integer:
case JsonToken.Float:
ticks = (long)reader.Value;
break;
case JsonToken.String:
long.TryParse(reader.Value.ToString(), out ticks);
break;
default:
throw new FormatException(string.Format(Strings.Exception_CouldNotParseUnixTimeStamp, reader.Value));
}
var converted = Math.Ceiling(Math.Log10(ticks)) >= 12
? DateTimeOffset.FromUnixTimeMilliseconds(ticks)
: DateTimeOffset.FromUnixTimeSeconds(ticks);
// Return value
if (objectType == typeof(DateTimeOffset) || objectType == typeof(DateTimeOffset?))
{
return converted;
}
if (objectType == typeof(DateTime) || objectType == typeof(DateTime?))
{
return converted.DateTime;
}
return null;
}