簡體   English   中英

將日期時間轉換為 JSON 日期時間

[英]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 + "}";

有兩種解決方案:

  1. 客戶端:

 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)

  1. 服務器端:

     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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM