Reputation: 2115
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"});
Upvotes: 3
Views: 1351
Reputation: 8318
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());
Upvotes: 3
Reputation: 126042
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\"";
Upvotes: 1