web-dev-qa-db-de.com

Konvertieren Sie DateTime in JSON DateTime

Ich habe einen WebService, der DateTime Field zurückgibt.

Ich erhalte ein Ergebnis /Date(1379048144000)/ aber

ich will nur 1379048144000 wie kann ich das erreichen.

[WebMethod]
public DateTime GetServerDate()
{
    return DateTime.Now;
}

durch Setzen von Header Content-Type: application/json; Zeichensatz = utf-8; Ich habe ein Ergebnis wie /Date(1379048144000)/.

7
manoj

Sie können Ihr WS so ändern, dass es ein Long mit dem Wert von DateTime zurückgibt. Der zurückzugebende Wert ist die Anzahl der Millisekunden seit der Unix-Epoche (01.01.1970). Dies könnte mit einer Erweiterungsmethode für DateTime geschehen, wie zum Beispiel:

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;
    }
    ...
}

Und Ihre Webservice-Methode könnte ungefähr so ​​aussehen:

public long GetMyDate(...)
{
    DateTime dateTime = ...;
    return dateTime.ToUnixTime();
}
15
Joe

mit Json.NET :

string date = Newtonsoft.Json.JsonConvert.SerializeObject(DateTime.Now);    
6
Ben

auf der Client-Seite können Sie diese Funktion verwenden, um dem Client das richtige Datum anzuzeigen (ich verwende es für meine Projekte):

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);
};

Diese Funktion hat das Rückgabedatum im Format: TT.MM.JJJJ, aber Sie können es bei Bedarf ändern. Ich hoffe, dass ich dir helfe.

6
mrakodol

versuche regex:

var jsonDate = @"/Date(1379048144000)/"; 
var regex = /-?\d+/; 
var jsonDate = re.exec(jsonDate); 
var dateOriginal = new Date(parseInt(m[0]));
0
Zaheer Ahmed

Sie können Ihr Problem immer lösen, wenn Sie ein Datum in einem JSON-Objekt an JS senden, indem Sie das Datum wie folgt konvertieren:

var myJSDate = (new Date(parseInt(obj.MyDate.substr(6)))).toJSON();

Wobei obj.Date das Datum enthält, das Sie formatieren möchten.

Dann bekommst du so etwas: "2013-10-25T18: 04: 17.289Z"

Sie können es jederzeit in der Chrome-Konsole überprüfen, indem Sie Folgendes schreiben:

(new Date()).toJSON();

Hoffe das hilft!

0
Matias

Schreiben Sie einfach wie folgt, um Ihre Datumszeichenfolge in das JSON-Format zu konvertieren.

date = "{" + date + "}";
0
Karan Thakkar