Преобразование даты в секундах в формат DateTime - C#

Узнай цену своей работы

Формулировка задачи:

Получаю дату через JSON в формате секунд
{"time":1436862901}
[JsonProperty("time")]
public DateTime Date { get; set; }
Почему сразу не воспринимается как дата, и как быстрее всего сделать чтобы воспринималось? Если пишу int или string то все ок, но мне нужно либо сразу получать датой либо перевести в дату.

Решение задачи: «Преобразование даты в секундах в формат 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);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5