Ich kam zu einem anderen Ansatz, der für einige nützlich sein könnte. Im Grunde erstelle ich meinen eigenen CustomDateConverter, den ich rufe, wenn ich es brauche. Der Umsetzer benötigt 2 Parameter, ein Datumsformat, z. yyyy-MM-dd HH:mm:ss
und ein Timezone, die mir das Datum aus UTC des Benutzers Zeitzone zu konvertieren:
public class JSONCustomDateConverter : DateTimeConverterBase
{
private TimeZoneInfo _timeZoneInfo;
private string _dateFormat;
public JSONCustomDateConverter(string dateFormat, TimeZoneInfo timeZoneInfo)
{
_dateFormat = dateFormat;
_timeZoneInfo = timeZoneInfo;
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(DateTime);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(TimeZoneInfo.ConvertTimeFromUtc(Convert.ToDateTime(value), _timeZoneInfo).ToString(_dateFormat));
writer.Flush();
}
Sie können es wie folgt verwenden:
var jsonString = JsonConvert.SerializeObject(myObject, Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, Converters = new List<JsonConverter>() { new JSONCustomDateConverter("yyyy-MM-dd HH:mm:ss", loggedUser.Timezone) } });
Offensichtlich könnten Sie auf die Zeitzone entfernen bezogen alles wenn Sie nur eine benutzerdefinierte Datumsformatierung wünschen. Lass mich wissen, dass es geholfen hat!
macht diese Arbeit für Sie ?: http://www.tek-tips.com/viewthread.cfm?qid=1526126&page=8 – bernie