Преобразование даты в секундах в формат DateTime - C#
Формулировка задачи:
Получаю дату через JSON в формате секунд
Почему сразу не воспринимается как дата, и как быстрее всего сделать чтобы воспринималось?
Если пишу int или string то все ок, но мне нужно либо сразу получать датой либо перевести в дату.
{"time":1436862901}[JsonProperty("time")]
public DateTime Date { get; set; }Решение задачи: «Преобразование даты в секундах в формат DateTime»
textual
Листинг программы
class UnixTimestampConverter : JsonConverter
{
static readonly DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
public override bool CanConvert(Type objectType)
{
return typeof(DateTime).IsAssignableFrom(objectType);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
int timestamp = serializer.Deserialize<int>(reader);
return unixEpoch.AddSeconds(timestamp);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var date = (DateTime)value;
var utcDate = date.ToUniversalTime();
var timestamp = (int)(utcDate - unixEpoch).TotalSeconds;
serializer.Serialize(writer, timestamp);
}
}