2016-07-08 6 views
7

मैं Javscript लिए मुझे क्या करना चाहते हैं सी # से मेरी दिनांकों serializing के लिए Newtonsoft.Json उपयोग कर रहा हूँ json serializer स्ट्रिंगNewtonsoft.Json अनुकूलित serialize तारीखें

यहाँ में दिनांक फ़ॉर्मेट करने के लिए वर्तमान संस्कृति का उपयोग किया है कि मैं क्या हो रही है है मेरी Json serializer द्वारा:

JsonConvert.SerializeObject(DateTime.Now); 

परिणाम है:

"2016-07-08T17:10:17.6722753-05:00" 

लेकिन क्या मैं पसंद है:

"08/07/2016 17:10:57" 

क्योंकि मेरी वर्तमान संस्कृति ब्राजील है और मैं चाहता हूं कि मेरी तिथियां उपरोक्त तरीके से प्रदर्शित हों।

यह संभव को विश्व स्तर पर जैसे कि वह क्या कर रहा है उपयोग करने के लिए Newtonsoft.Json में json serializer बता (किसी भी तारीख है कि धारावाहिक हो सकता है के लिए) है date.ToString() (क्योंकि ToString System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat में संस्कृति का सम्मान करता है और सही प्रारूप देता है तदनुसार)

+1

आप सेट कर सकते हैं [वैश्विक serializer सेटिंग्स] (https://stackoverflow.com/questions/21815759/set-default-global-json-serializer-settings) के लिए एक धागा स्थैतिक मान का उपयोग करने [ 'DateFormatString'] (http://www.newtonsoft.com/json/help/html/P_Newtonsoft_Json_JsonSerializerSettings_DateFormatString.htm)। – dbc

+0

कैसे? क्या आप कुछ कोड जोड़ने की कोशिश कर सकते हैं। मुझे अपनी तिथियों के लिए विशिष्ट कॉन्फ़िगरेशन क्या होना चाहिए –

उत्तर

18

आप अपने इच्छित प्रारूप में JsonSerializerSettings.DateFormatString सेट करना चाहते हैं।

var jsonSettings = new JsonSerializerSettings(); 
jsonSettings.DateFormatString = "dd/MM/yyy hh:mm:ss"; 

string json = JsonConvert.SerializeObject(someObject, jsonSettings); 

उसके बाद, आप पास कर सकते हैं या तो सेटिंग्स हर बार जब आप serializer प्रयोग वस्तु, या डीबीसी द्वारा संदर्भित answer में चरणों का पालन करें। हालांकि, आप यह नहीं बताते कि यह कहां चल रहा है (एएसपी.नेट, डेस्कटॉप, यूडब्लूपी, आदि), तो आप इसे वैश्विक स्तर पर कैसे सेट कर सकते हैं अलग-अलग हो सकते हैं।

+0

मैं एमवीसी 6 का उपयोग कर रहा हूं, क्या आप जानते हैं कि मैं कोड कहां रख सकता हूं ताकि यह सभी जेसन पर लागू हो। मैं इसे startup.cs विधि कॉन्फ़िगर में डालता हूं लेकिन यह काम नहीं कर रहा है। –

0

हाँ आप JsonSerializer सेटिंग्स में कनवर्टर का उपयोग कर सकते हैं।

public class SpecialDateTimeConverter : DateTimeConverterBase 
    { 
     public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) 
     { 
      throw new NotImplementedException(); 
     } 

     public override void WriteJson(JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer) 
     { 
      writer.WriteValue(((DateTime)value).ToString("dd/MM/yyyy hh:mm:ss")); 
     } 
    } 

    string convertedDateTime = JsonConvert.SerializeObject(DateTime.Now, Formatting.Indented, new SpecialDateTimeConverter()); 
संबंधित मुद्दे