Click here to Skip to main content
Click here to Skip to main content
 
Add your own
alternative version
Go to top

Gett.NET - A library for Ge.tt Web Services

, 13 Jun 2014
Use Ge.tt Web Services for real-time file publishing and sharing.
Gett.NET_demo.zip
Debug
Gett.NET.dll
GettTest.exe
GettTest.vshost.exe
GettTest.vshost.exe.manifest
Newtonsoft.Json.dll
Gett.NET_src-noexe.zip
Gett.NET
Gett.NET.suo
Gett.NET.v11.suo
Gett.NET
bin
Json.Net
Properties
WebSocket
GettTest
bin
Debug
GettTest.vshost.exe.manifest
obj
x86
Debug
Properties
Settings.settings
Gett.NET_src.zip
Gett.NET.suo
Gett.NET.v11.suo
Newtonsoft.Json.dll
GettTest.vshost.exe
GettTest.vshost.exe.manifest
Settings.settings
#region License information
/*

  Copyright (c) 2012 Togocoder (http://www.codeproject.com/Members/Kim-Togo)
 
  This file is part of Gett.NET library that uses the Ge.tt REST API, http://ge.tt/developers

  Gett.NET is a free library: you can redistribute it and/or modify as nessery
  it under the terms of The Code Project Open License (CPOL) as published by
  the The Code Project, either version 1.02 of the License, or (at your option) any later version.

  Gett.NET is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY OF ANY KIND. The software is provided "as-is".
 
  Please read the The Code Project Open License (CPOL) at http://www.codeproject.com/info/cpol10.aspx

  I would appreciate getting an email, if you choose to use this library in your own work.
  Send an email to togocoder(at)gmail.com with a little description of your work, thanks! :-)

  ---
  This class handles converting an Unix timestamp to DateTime class.
  It is written by Christophe Geers on September 25, 2011. (About http://cgeers.com/about/)
  
  Please see http://cgeers.com/2011/09/25/writing-a-custom-json-net-datetime-converter/
  for the orginal source code.
  
  It is a JsonConverter type for Json.NET.
*/
#endregion

using System;

namespace Newtonsoft.Json.Converters
{
  /// <summary>
  /// Convert Unix time to and from DateTime.
  /// </summary>
  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));
      }

      long ticks = (long)reader.Value;
      DateTime 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)
      {
        DateTime epoc = new DateTime(1970, 1, 1);
        TimeSpan 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);
    }
  }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Kim Togo
Software Developer Miralix
Denmark Denmark
Has worked as a programmer since 1999, starting with C++/MFC, Java, PHP and MySQL. Now it is all about C# (my favorite programming language), MS SQL, Azure and Xamarin (iOS/Android/WP8)
 
My primary work is to create applications that interacts with PABC/PBX, Microsoft Lync / UCMA.
Follow on   Twitter   Google+   LinkedIn

| Advertise | Privacy | Mobile
Web04 | 2.8.140905.1 | Last Updated 13 Jun 2014
Article Copyright 2012 by Kim Togo
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid