[英]Convert DateTime To JSON DateTime
我有一個返回 DateTime 字段的 WebService。
我得到一個結果/Date(1379048144000)/
但是
我只想要1379048144000
我怎樣才能做到這一點。
[WebMethod]
public DateTime GetServerDate()
{
return DateTime.Now;
}
通過設置 Header Content-Type: application/json; 字符集=utf-8; 我得到了像/Date(1379048144000)/
這樣的結果。
您可以更改您的 WS 以返回帶有 DateTime 值的 long。 要返回的值是自 Unix 紀元 (01/01/1970) 以來的毫秒數。 這可以通過DateTime
上的擴展方法來完成,例如:
public static class DateTimeExtensions
{
...
private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1);
public static long ToUnixTime(this DateTime dateTime)
{
return (dateTime - UnixEpoch).Ticks / TimeSpan.TicksPerMillisecond;
}
...
}
您的 Web 服務方法可能類似於:
public long GetMyDate(...)
{
DateTime dateTime = ...;
return dateTime.ToUnixTime();
}
使用Json.NET :
string date = Newtonsoft.Json.JsonConvert.SerializeObject(DateTime.Now);
在客戶端,您可以使用此功能向客戶端顯示正確的日期(我在我的項目中使用它):
function parseJsonDate(jsonDate) {
var offset = new Date().getTimezoneOffset() * 60000;
var parts = /\/Date\((-?\d+)([+-]\d{2})?(\d{2})?.*/.exec(jsonDate);
if (parts[2] == undefined) parts[2] = 0;
if (parts[3] == undefined) parts[3] = 0;
d = new Date(+parts[1] + offset + parts[2] * 3600000 + parts[3] * 60000);
date = d.getDate() + 1;
date = date < 10 ? "0" + date : date;
mon = d.getMonth() + 1;
mon = mon < 10 ? "0" + mon : mon;
year = d.getFullYear();
return (date + "." + mon + "." + year);
};
此函數以格式:dd.mm.yyyy 返回正確的日期,但您可以根據需要更改它。 我希望我能幫助你。
將 JSON 對象中的日期發送給 JS 時,您總是可以通過如下轉換日期來解決您的問題:
var myJSDate = (new Date(parseInt(obj.MyDate.substr(6)))).toJSON();
其中 obj.Date 包含您要格式化的日期。
然后你會得到這樣的信息:“2013-10-25T18:04:17.289Z”
您可以隨時在 Chrome 控制台中通過編寫以下內容來檢查它:
(new Date()).toJSON();
希望這可以幫助!
只需像這樣編寫即可將日期字符串轉換為 JSON 格式。
date = "{" + date + "}";
有兩種解決方案:
function ToJavaScriptDate(value) { var pattern = /Date\\(([^)]+)\\)/; var results = pattern.exec(value); var dt = new Date(parseFloat(results[1])); return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear(); }
也可能需要轉換成數據對象 var date = new Date(xxx)
服務器端:
Newtonsoft.Json.JsonConvert.SerializeObject(your_object)
嘗試正則表達式:
var jsonDate = @"/Date(1379048144000)/";
var regex = /-?\d+/;
var jsonDate = re.exec(jsonDate);
var dateOriginal = new Date(parseInt(m[0]));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.