私はNewtonsoft.Json
_を使用してC#からjavscriptに日付をシリアル化しますjsonシリアライザーが日付を文字列にフォーマットするために現在のカルチャを使用することです
Jsonシリアライザーで得られるものは次のとおりです。
_JsonConvert.SerializeObject(DateTime.Now);
_
結果は次のとおりです。
_"2016-07-08T17:10:17.6722753-05:00"
_
しかし、私が好むのは:
_"08/07/2016 17:10:57"
_
私の現在の文化はブラジルであり、日付を上記の方法で表示したいので。
Globally(シリアル化される可能性のある日付に対して)Newtonsoft.Jsonのjsonシリアライザーに、date.ToString()
(ToStringがカルチャを尊重するため、 _System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat
_で適切な形式を提供します)
JsonSerializerSettings.DateFormatString を希望の形式に設定する必要があります。
var jsonSettings = new JsonSerializerSettings();
jsonSettings.DateFormatString = "dd/MM/yyy hh:mm:ss";
string json = JsonConvert.SerializeObject(someObject, jsonSettings);
その後、シリアライザーを使用するたびに設定オブジェクトを渡すか、dbcによって参照される answer の手順に従うことができます。ただし、これが実行されている場所(ASP.NET、デスクトップ、UWPなど)については言及していません。そのため、グローバルに設定する方法は異なる場合があります。
はい、JsonSerializer設定でConverterを使用できます。
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());