Это на самом деле немного сложнее, чем предлагаемые дубликаты. Here's a related question, который имеет дело с синтаксическими строками, содержащими сокращения времени.
Чтобы использовать эту информацию в том, что ответ с Json.NET, вы могли бы быть лучше с помощью настраиваемого преобразователя:
public class DateTimeWithTimezoneConverter : JsonConverter
{
public override object ReadJson(
JsonReader reader,
Type objectType,
object existingValue,
JsonSerializer serializer)
{
string t = serializer.Deserialize<string>(reader);
t = t.Replace("MST", "-07:00");
// Do other replacements that you need here.
return
DateTime.ParseExact(t, @"M/dd/yy h:mm:ss tt zzz", CultureInfo.CurrentCulture);
}
public override void WriteJson(
JsonWriter writer,
object value,
JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanConvert(Type t)
{
return typeof(DateTime).IsAssignableFrom(t);
}
}
Обратите внимание, что это только обрабатывает конкретный случай вы представленный в вашем вопросе. Если вам нужна поддержка большего количества часовых поясов, проверьте связанный ответ. Если у вас есть контроль над кодом, генерирующим строки, вы можете использовать смещение вместо сокращения времени часового пояса.
Вот пример того, как вы будете использовать его:
public class MyType
{
public string EntityType { get; set; }
public int CountValue { get; set; }
public DateTime LastUpdateDate { get; set; }
public int RowCnt { get; set; }
}
string json = "{\"entityType\":\"Phone\",\"countValue\":30,\"lastUpdateDate\":\"3/25/14 12:00:00 PM MST\",\"RowCnt\":30}";
MyType obj = JsonConvert.DeserializeObject<MyType>(
json,
new DateTimeWithTimezoneConverter());
возможно дубликат [JSON DateTime с анализом из Newtonsoft в формате JSON Serializer] (http://stackoverflow.com/questions/668488/parsing-json- datetime-from-newtonsofts-json-serializer) –
На самом деле это похоже ближе: http://stackoverflow.com/questions/21256132/deserializing-dates-with-dd-mm-yyyy-format-using-json-net – dbc
Здесь моя строка - 3/25/14 12:00:00 PM MST. Это не стандартизация сериализации. У нас есть строка MST в дате времени – karthikeyan