मैं एक अलग दृष्टिकोण है जो किसी के लिए उपयोगी हो सकता है के साथ आया था। असल में मैं अपना खुद का कस्टमडेट कनवर्टर बनाता हूं जिसे मुझे इसकी आवश्यकता होने पर कॉल करता है। कनवर्टर 2 पैरामीटर लेता है, एक दिनांक प्रारूप उदा। yyyy-MM-dd HH:mm:ss
और एक TimeZoneInfo, मुझे उपयोगकर्ता के समय क्षेत्र के यूटीसी से तारीख कन्वर्ट करने के लिए अनुमति देता है जो:
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();
}
आप इस तरह इसका इस्तेमाल कर सकते हैं:
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) } });
जाहिर है आप समय क्षेत्र से संबंधित कुछ को दूर कर सकता है अगर आप केवल कस्टम डेट स्वरूपण चाहते हैं। मुझे यह जानने में मदद मिली!
लिए काम करता है संदर्भ के लिए के लिए आप ?: http://www.tek-tips.com/viewthread.cfm?qid=1526126&page=8 – bernie