2016-01-13 4 views

ответ

3

Попробуйте следующие

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

Если вы хотите формат UTC, попробуйте следующее

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

Или реализовать пользовательский Datetime конвертер

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)); 
} 

}

И использовать как этот

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

Помните, что в формате JSON, строки должны быть заключены в кавычки. Поэтому то, что вы получили в data, на самом деле не строка JSON (это номер). Если вы хотите, чтобы JSON.NET анализировал это так, как вы ожидаете, вам нужно обернуть его в котировках:

var data = "\"20160101000000000\""; 
Смежные вопросы