我希望以UTC格式将"20160101000000000"
的日期反序列化为DateTime
。
var data = "20160101000000000";
var dateTime = JsonConvert.DeserializeObject<DateTime>(data,
new IsoDateTimeConverter { DateTimeFormat = "yyyyMMddhhmmssfff"});
答案 0 :(得分: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'");
或实施自定义日期时间转换器
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 :(得分:1)
请记住,在JSON中,必须引用字符串。因此,您在data
中获得的实际上不是一个JSON字符串(它是一个数字)。如果您希望JSON.NET以您期望的方式解析它,您需要将其包装在引号中:
var data = "\"20160101000000000\"";