3

I want to deserialize date like this "20160101000000000" to DateTime in UTC kind.

var data = "20160101000000000";
var dateTime = JsonConvert.DeserializeObject<DateTime>(data,
            new IsoDateTimeConverter { DateTimeFormat = "yyyyMMddhhmmssfff"});

enter image description here

2 Answers 2

3

Try following

var data = "20160101000000000";
var dateTime = new DateTime(JsonConvert.DeserializeObject<Int64>(data));

If you want to UTC format, try following

var utc = dateTime.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'");

Or implement Custom Datetime Converter

public class CustomDateTimeConverter : DateTimeConverterBase
{
 public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{ return; }

public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
  return new DateTime(Convert.ToInt64(reader.Value));
}

}

And use like this

var data = "20160101000000000";
var dateTime = JsonConvert.DeserializeObject<DateTime>(data, new CustomDateTimeConverter());
Sign up to request clarification or add additional context in comments.

Comments

1

Remember that in JSON, strings must be quoted. Therefore what you've got in data is actually not a JSON string (it's a number). If you want JSON.NET to parse this the way you expect, you'll need to wrap it in quotes:

var data = "\"20160101000000000\"";

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.