我解析具有JsonNet的DateTime屬性的c#對象,然後將其發佈到服務器。但它返回日期格式錯誤。它要求與這樣的格式:C#將日期時間轉換爲WCF日期時間格式
"/Date(1327572000000-1000)/"
如何將c#日期時間轉換爲這種格式?
我解析具有JsonNet的DateTime屬性的c#對象,然後將其發佈到服務器。但它返回日期格式錯誤。它要求與這樣的格式:C#將日期時間轉換爲WCF日期時間格式
"/Date(1327572000000-1000)/"
如何將c#日期時間轉換爲這種格式?
既然你問到如何使用JSON.NET這種格式序列:
// Set the DateFormatHandling wherever you are configuring JSON.Net.
// This is usually globally configured per application.
var settings = new JsonSerializerSettings
{
DateFormatHandling = DateFormatHandling.MicrosoftDateFormat
};
// When you serialize, DateTime and DateTimeOffset values will be in this format.
string json = JsonConvert.SerializeObject(yourDateTimeValue, settings);
不過,我強烈建議您不要使用此格式,除非你絕對必須的,通常與舊代碼的兼容性的目的。 ISO-8601格式是JSON日期和時間的首選(事實上)格式。
謝謝。是的,我正在使用非常舊的API –
這是WCF本質上是如何序列化DateTime值(注意,非UTC值包括關於當前時區信息)
public static string MsJson(DateTime value)
{
long unixEpochTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;
long ticks = (value.ToUniversalTime().Ticks - unixEpochTicks)/10000;
if (value.Kind == DateTimeKind.Utc)
{
return String.Format("/Date({0})/", ticks);
}
else
{
TimeSpan ts = TimeZone.CurrentTimeZone.GetUtcOffset(value.ToLocalTime());
string sign = ts.Ticks < 0 ? "-" : "+";
int hours = Math.Abs(ts.Hours);
string hs = (hours < 10)
? "0" + hours
: hours.ToString(CultureInfo.InvariantCulture);
int minutes = Math.Abs(ts.Minutes);
string ms = (minutes < 10)
? "0" + minutes
: minutes.ToString(CultureInfo.InvariantCulture);
return string.Format("/Date({0}{1}{2}{3})/", ticks, sign, hs, ms);
}
}
請參見[這個答案](https://stackoverflow.com/a/ 1016908) – Arman
@Arman C#和Javascript是不同的 –
糟糕,我複製了錯誤的鏈接,對此表示歉意。我的意思是這個[https://stackoverflow.com/a/18821102](https://stackoverflow.com/a/18821102)。 – Arman