web-dev-qa-db-fra.com

Convertir DateTime en JSON DateTime

J'ai un service Web qui renvoie le champ DateTime.

Je reçois un résultat /Date(1379048144000)/ mais

je veux juste 1379048144000 comment puis-je y parvenir.

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

en définissant Header Content-Type: application/json; charset = utf-8; J'ai eu un résultat comme /Date(1379048144000)/.

7
manoj

Vous pouvez modifier votre WS pour qu'il retourne un long avec la valeur de DateTime. La valeur à renvoyer est le nombre de millisecondes depuis l’époque Unix (01/01/1970). Cela pourrait être fait avec une méthode d'extension sur DateTime quelque chose comme:

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

Et votre méthode de service Web pourrait ressembler à quelque chose comme:

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

avec Json.NET :

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

côté client, vous pouvez utiliser cette fonction pour afficher une date correcte au client (je l’utilise sur mes projets):

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

Cette fonction retourne la bonne date au format: jj.mm.aaaa, mais vous pouvez la changer si vous en avez besoin. J'espère que je vous aide.

6
mrakodol

essayez regex:

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

Vous pouvez toujours résoudre votre problème lorsque vous envoyez une date dans un objet JSON à JS en convertissant la date comme suit:

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

Où obj.Date contient la date à laquelle vous voulez formater.

Ensuite, vous obtiendrez quelque chose comme ceci: "2013-10-25T18: 04: 17.289Z"

Vous pouvez toujours le vérifier dans la console Chrome en écrivant:

(new Date()).toJSON();

J'espère que cela t'aides!

0
Matias

Écrivez simplement comme ceci pour convertir votre chaîne de date au format JSON.

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