Comment formater une date Microsoft JSON?

je prends ma première fissure à Ajax avec jQuery. Je mets mes données sur ma page, mais j'ai quelques problèmes avec les données JSON qui sont retournées pour les types de données Date. En gros, je récupère une corde qui ressemble à ceci:

/Date(1224043200000)/

de quelqu'un de totalement nouveau à JSON - Comment puis-je formater ceci dans un format de date courte? Cela devrait-il être traité quelque part dans le code jQuery? J'ai essayé le plugin jQuery.UI.datepicker en utilisant $.datepicker.formatDate() sans aucun succès.

FYI: Voici la solution que j'ai trouvé en utilisant une combinaison des réponses ici:

function getMismatch(id) {
  $.getJSON("Main.aspx?Callback=GetMismatch",
    { MismatchId: id },

    function (result) {
      $("#AuthMerchId").text(result.AuthorizationMerchantId);
      $("#SttlMerchId").text(result.SettlementMerchantId);
      $("#CreateDate").text(formatJSONDate(Date(result.AppendDts)));
      $("#ExpireDate").text(formatJSONDate(Date(result.ExpiresDts)));
      $("#LastUpdate").text(formatJSONDate(Date(result.LastUpdateDts)));
      $("#LastUpdatedBy").text(result.LastUpdateNt);
      $("#ProcessIn").text(result.ProcessIn);
    }
  );

  return false;
}

function formatJSONDate(jsonDate) {
  var newDate = dateFormat(jsonDate, "mm/dd/yyyy");
  return newDate;
}

Cette solution a obtenu mon objet de la méthode de rappel et affiché les dates sur la page correctement en utilisant la bibliothèque de format de date.

1821
demandé sur Peter Mortensen 2008-10-16 00:43:41
la source

30 ответов

Eval n'est pas nécessaire. Cela marchera très bien:

var date = new Date(parseInt(jsonDate.substr(6)));

la fonction substr sort la partie" /Date ( ", et la fonction parseInt obtient le nombre entier et ignore le") / " à la fin. Le nombre résultant est passé dans le constructeur de Date.

EDIT: j'ai volontairement laissé de côté l'radix (le 2ème argument de parseInt); voir mon commentaire ci-dessous . En outre, je suis entièrement d'accord avec le commentaire de Rory : les dates ISO-8601 sont préférées à cet ancien format -- donc ce format ne devrait généralement pas être utilisé pour de nouveaux développements. Voir l'excellent Json.NET bibliothèque pour une excellente alternative qui sérialise les dates en utilisant le format ISO-8601.

pour les dates JSON formatées ISO-8601, il suffit de passer la chaîne dans le constructeur de Date:

var date = new Date(jsonDate); //no ugly parsing needed; full timezone support
1590
répondu Roy Tinker 2017-05-23 15:02:59
la source

vous pouvez utiliser ceci pour obtenir une date de JSON:

var date = eval(jsonDate.replace(/\/Date\((\d+)\)\//gi, "new Date()"));

et ensuite vous pouvez utiliser un format de Date JavaScript script (1.2 KB lorsque miniifié et gzippé) pour l'afficher comme vous voulez.

117
répondu Panos 2014-11-09 13:16:37
la source

pour ceux qui utilisent Newtonsoft Json.NET , lire sur la façon de le faire via JSON natif dans IE8, Firefox 3.5 plus Json.NET .

aussi la documentation sur le changement du format des dates écrites par Json.NET est utile: Sérialising Dates with Json.NET

pour ceux qui sont trop paresseux, voici les étapes rapides. Comme JSON a une implémentation DateTime lâche, vous devez utiliser le IsoDateTimeConverter() . Notez que depuis Json.NET 4.5 le format de date par défaut est ISO de sorte que le code ci-dessous n'est pas nécessaire.

string jsonText = JsonConvert.SerializeObject(p, new IsoDateTimeConverter());

Le JSON viendra par

"fieldName": "2009-04-12T20:44:55"

enfin, un peu de JavaScript pour convertir la date ISO en date JavaScript:

function isoDateReviver(value) {
  if (typeof value === 'string') {
    var a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)(?:([\+-])(\d{2})\:(\d{2}))?Z?$/.exec(value);
      if (a) {
        var utcMilliseconds = Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6]);
        return new Date(utcMilliseconds);
      }
  }
  return value;
}

Je l'ai utilisé comme ça

$("<span />").text(isoDateReviver(item.fieldName).toLocaleString()).appendTo("#" + divName);
86
répondu Jason Jong 2012-08-02 03:23:11
la source

l'exemple original:

/Date(1224043200000)/  

ne reflète pas le formatage utilisé par WCF lors de l'envoi de dates via WCF REST en utilisant la sérialisation JSON intégrée. (au moins sur le réseau 3.5, SP1)

j'ai trouvé la réponse ici utile, mais une légère modification à la regex est nécessaire, car il semble que le décalage du fuseau horaire GMT est ajouté au numéro retourné (depuis 1970) dans WCF JSON.

dans un service de la WCF j'ai:

[OperationContract]
[WebInvoke(
    RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.WrappedRequest
    )]
ApptVisitLinkInfo GetCurrentLinkInfo( int appointmentsId );

ApptVisitLinkInfo est simplement défini:

public class ApptVisitLinkInfo {
    string Field1 { get; set; }
    DateTime Field2 { get; set; }
    ...
}

quand "Field2" est retourné comme Json du service la valeur est:

/Date(1224043200000-0600)/

noter le décalage du fuseau horaire inclus dans la valeur.

de la modification de La regex:

/\/Date\((.*?)\)\//gi

il est un peu plus impatient et saisit tout entre les parens, pas seulement le premier nombre. Le sinze de temps résultant 1970, plus décalage de fuseau horaire peuvent tous être introduits dans l'eval pour obtenir un objet date.

la ligne JavaScript résultante pour la remplacer est:

replace(/\/Date\((.*?)\)\//gi, "new Date()");
57
répondu Aaron 2009-12-30 04:21:28
la source

ne vous répétez pas-automatisez la conversion de date en utilisant $.parseJSON()

les réponses à votre message fournissent la conversion manuelle de date en dates JavaScript. J'ai rallongé un peu le $.parseJSON() de jQuery, donc il est capable d'analyser automatiquement les dates quand on lui demande de le faire. Processus informatiques ASP.NET les dates formatées ( /Date(12348721342)/ ) ainsi que les dates formatées ISO ( 2010-01-01T12.34.56.789Z ) qui sont prises en charge par les fonctions JSON natives dans les navigateurs (et les bibliothèques comme json2.js).

en tout cas. Si vous ne voulez pas répéter votre code de conversion de date encore et encore je vous suggère de lire ce billet de blog et obtenir le code qui vous rendra la vie un peu plus facile.

55
répondu Robert Koritnik 2014-11-09 13:25:31
la source

si vous dites en JavaScript,

var thedate = new Date(1224043200000);
alert(thedate);

vous verrez que c'est la date correcte, et vous pouvez l'utiliser n'importe où dans le code JavaScript avec n'importe quel framework.

52
répondu John Boker 2016-05-16 16:55:45
la source

Cliquez ici pour vérifier la démo

JavaScript / jQuery

var = MyDate_String_Value = "/Date(1224043200000)/"
var value = new Date
            (
                 parseInt(MyDate_String_Value.replace(/(^.*\()|([+-].*$)/g, ''))
            );
var dat = value.getMonth() +
                         1 +
                       "/" +
           value.getDate() +
                       "/" +
       value.getFullYear();

résultat - "10/15/2008 "

49
répondu 6 revs, 2 users 82%user2007801 2014-11-09 14:01:26
la source

mise à Jour

nous avons une bibliothèque D'interface utilisateur interne qui doit faire face aux deux Microsoft ASP.NET format JSON intégré, comme /Date(msecs)/ , demandé ici à l'origine, et la plupart des JSON date format, y compris JSON.NET comme 2014-06-22T00:00:00.0 . En outre, nous devons faire face à l'incapacité de oldIE à faire face à tout sauf 3 décimales .

nous détectons d'abord le type de date que nous consommons, et nous le comparons à une date normale. Objet JavaScript Date , formater ensuite.

1) Détecter Microsoft format de la Date

// Handling of Microsoft AJAX Dates, formatted like '/Date(01238329348239)/'
function looksLikeMSDate(s) {
    return /^\/Date\(/.test(s);
}

2) Détecter le format de date ISO

var isoDateRegex = /^(\d\d\d\d)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)(\.\d\d?\d?)?([\+-]\d\d:\d\d|Z)?$/;

function looksLikeIsoDate(s) {
    return isoDateRegex.test(s);
}

3) Analyser MS format de la date:

function parseMSDate(s) {
    // Jump forward past the /Date(, parseInt handles the rest
    return new Date(parseInt(s.substr(6)));
}

4) Analyse ISO date format.

nous avons au moins un moyen d'être sûr que nous avons affaire à la norme ISO dates ou ISO dates modifié pour avoir toujours trois millisecondes lieux ( voir ci-dessus ), le code est donc différent selon l'environnement.

4a) Analyse de la norme ISO format de la Date, face à ancien de questions:

function parseIsoDate(s) {
    var m = isoDateRegex.exec(s);

    // Is this UTC, offset, or undefined? Treat undefined as UTC.
    if (m.length == 7 ||                // Just the y-m-dTh:m:s, no ms, no tz offset - assume UTC
        (m.length > 7 && (
            !m[7] ||                    // Array came back length 9 with undefined for 7 and 8
            m[7].charAt(0) != '.' ||    // ms portion, no tz offset, or no ms portion, Z
            !m[8] ||                    // ms portion, no tz offset
            m[8] == 'Z'))) {            // ms portion and Z
        // JavaScript's weirdo date handling expects just the months to be 0-based, as in 0-11, not 1-12 - the rest are as you expect in dates.
        var d = new Date(Date.UTC(m[1], m[2]-1, m[3], m[4], m[5], m[6]));
    } else {
        // local
        var d = new Date(m[1], m[2]-1, m[3], m[4], m[5], m[6]);
    }

    return d;
}

4b) analyse du format ISO avec une décimale fixe de trois millisecondes - beaucoup plus facile:

function parseIsoDate(s) {
    return new Date(s);
}

5) Format:

function hasTime(d) {
    return !!(d.getUTCHours() || d.getUTCMinutes() || d.getUTCSeconds());
}

function zeroFill(n) {
    if ((n + '').length == 1)
        return '0' + n;

    return n;
}

function formatDate(d) {
    if (hasTime(d)) {
        var s = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
        s += ' ' + d.getHours() + ':' + zeroFill(d.getMinutes()) + ':' + zeroFill(d.getSeconds());
    } else {
        var s = (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();
    }

    return s;
}

6) attachez tout ensemble:

function parseDate(s) {
    var d;
    if (looksLikeMSDate(s))
        d = parseMSDate(s);
    else if (looksLikeIsoDate(s))
        d = parseIsoDate(s);
    else
        return null;

    return formatDate(d);
}

le dessous Vieux answer est utile pour lier ce formatage de date à l'analyse JSON de jQuery afin que vous obteniez des objets Date au lieu de chaînes, ou si vous êtes toujours coincé dans jQuery <1.5 d'une façon ou d'une autre.

Ancienne Réponse

si vous utilisez la fonction Ajax de jQuery 1.4 avec ASP.NET MVC, vous pouvez transformer toutes les propriétés DateTime en objets Date avec:

// Once
jQuery.parseJSON = function(d) {return eval('(' + d + ')');};

$.ajax({
    ...
    dataFilter: function(d) {
        return d.replace(/"\\/(Date\(-?\d+\))\\/"/g, 'new ');
    },
    ...
});

dans jQuery 1.5 vous pouvez éviter de passer outre la méthode parseJSON globalement en utilisant le option convertisseurs dans L'appel Ajax.

http://api.jquery.com/jQuery.ajax /

Malheureusement, vous avez à passer à l'ancienne eval route afin d'obtenir des Dates pour analyser globalement en-place - sinon, vous avez besoin de convertir plus de cas par cas après analyse.

31
répondu Chris Moschini 2017-05-23 15:34:53
la source

j'ai également dû chercher une solution à ce problème et finalement je suis tombé sur moment.js qui est une belle bibliothèque qui peut analyser ce format de date et beaucoup plus.

var d = moment(yourdatestring)

ça m'a épargné des maux de tête, alors j'ai pensé le partager avec vous. :)

Vous pouvez trouver plus d'informations à ce sujet ici: http://momentjs.com /

21
répondu Venemo 2013-05-15 10:36:24
la source

j'ai fini par ajouter les "caractères dans L'expression régulière de Panos pour se débarrasser de ceux générés par le serializer de Microsoft pour lors de l'écriture des objets dans un script en ligne:

donc si vous avez une propriété dans votre C# code-derrière c'est quelque chose comme

protected string JsonObject { get { return jsSerialiser.Serialize(_myObject); }}

et dans votre aspx vous avez

<script type="text/javascript">
    var myObject = '<%= JsonObject %>';
</script>

, Vous obtiendrez quelque chose comme

var myObject = '{"StartDate":"\/Date(1255131630400)\/"}';

avis guillemet.

pour obtenir ceci dans une forme que eval va correctement deserialiser, j'ai utilisé:

myObject = myObject.replace(/"\/Date\((\d+)\)\/"/g, 'new Date()');

j'utilise Prototype et pour l'utiliser j'ai ajouté

String.prototype.evalJSONWithDates = function() {
    var jsonWithDates = this.replace(/"\/Date\((\d+)\)\/"/g, 'new Date()');
    return jsonWithDates.evalJSON(true);
}
21
répondu Chris Woodward 2014-11-09 13:20:25
la source

il n'y a pas de date type dans JSON . Cela ressemble au nombre de secondes / millisecondes d'une certaine époque. Si vous connaissez l'époque, vous pouvez créer la date en ajoutant sur la bonne quantité de temps.

20
répondu johnstok 2008-10-16 00:46:51
la source

en jQuery 1.5, aussi longtemps que vous avez json2.js pour couvrir les navigateurs plus anciens, vous pouvez desérialiser toutes les dates provenant D'Ajax comme suit:

(function () {
    var DATE_START = "/Date(";
    var DATE_START_LENGTH = DATE_START.length;

    function isDateString(x) {
        return typeof x === "string" && x.startsWith(DATE_START);
    }

    function deserializeDateString(dateString) {
        var dateOffsetByLocalTime = new Date(parseInt(dateString.substr(DATE_START_LENGTH)));
        var utcDate = new Date(dateOffsetByLocalTime.getTime() - dateOffsetByLocalTime.getTimezoneOffset() * 60 * 1000);
        return utcDate;
    }

    function convertJSONDates(key, value) {
      if (isDateString(value)) {
        return deserializeDateString(value);
      }
      return value;
    }

    window.jQuery.ajaxSetup({
      converters: {
        "text json": function(data) {
          return window.JSON.parse(data, convertJSONDates);
        }
      }
    });
}());

j'ai inclus la logique qui suppose que vous envoyez toutes les dates du serveur comme UTC (ce que vous devriez); le consommateur obtient alors un objet JavaScript Date qui a la valeur tics appropriée pour refléter ceci. C'est-à-dire , appelant getUTCHours() , etc. sur la date de retourner la même valeur comme il l'a fait sur le serveur, et en appelant getHours() retournera la valeur dans le fuseau horaire local de l'utilisateur tel que déterminé par leur navigateur.

cela ne tient pas compte du format WCF avec des décalages de fuseau horaire, bien que cela soit relativement facile à ajouter.

19
répondu Domenic 2014-11-09 13:55:30
la source

n'exagère pas. Comme nous l'avons fait pendant des décennies, passer un décalage numérique de l'époque standard de facto du 1er janvier 1970 minuit GMT / UTC/ & c en nombre de secondes (ou millisecondes) depuis cette époque. JavaScript l'aime, Java l'aime, C l'aime, et Internet l'aime.

17
répondu Xepoch 2014-11-09 13:21:40
la source

utilisant le curseur de données jQuery UI-n'a de sens que si vous incluez déjà jQuery UI:

$.datepicker.formatDate('MM d, yy', new Date(parseInt('/Date(1224043200000)/'.substr(6)))); 

sortie:

15 octobre 2008

17
répondu dominic 2015-10-27 00:26:17
la source

chacune de ces réponses a une chose en commun: elles stockent toutes les dates comme une seule valeur (généralement une chaîne).

une autre option est de profiter de la structure inhérente de JSON, et de représenter une date comme liste de nombres:

{ "name":"Nick",
  "birthdate":[1968,6,9] }

bien sûr, vous devez vous assurer que les deux extrémités de la conversation s'accordent sur le format (Année, Mois, Jour), et quels champs sont censés être des dates,... mais il a l'avantage d' éviter la question de la conversion date-à-chaîne. C'est l'ensemble des nombres-pas de chaînes. En outre, l'utilisation de l'ordre: Année, Mois, Jour permet également un tri approprié par date.

juste en pensant à l'extérieur de la boîte ici -- une date JSON ne doit pas être stockée comme une chaîne.

un autre avantage à le faire de cette façon est que vous pouvez facilement (et efficacement) sélectionner tous les enregistrements pour une année ou un mois donné en tirant parti de la façon CouchDB manipulations les requêtes sur les valeurs de tableau.

16
répondu Nick Perkins 2014-11-09 13:57:08
la source

affichage dans le fil impressionnant:

var d = new Date(parseInt('/Date(1224043200000)/'.slice(6, -2)));
alert('' + (1 + d.getMonth()) + '/' + d.getDate() + '/' + d.getFullYear().toString().slice(-2));
15
répondu Dan Beam 2010-09-26 15:20:11
la source
var newDate = dateFormat(jsonDate, "mm/dd/yyyy"); 

y a-t-il une autre option sans utiliser la bibliothèque jQuery?

14
répondu blgnklc 2014-11-09 13:18:12
la source

juste pour ajouter une autre approche ici, l '" approche de tiques "que WCF prend Est Sujet à des problèmes avec les fuseaux horaires si vous n'êtes pas extrêmement prudent tel que décrit ici et à d'autres endroits. J'utilise donc maintenant le format ISO 8601 que les formats .NET et JavaScript prennent dûment en charge et qui inclut les offsets de fuseaux horaires.

In WCF / .NET:

où CreationDate est un système.DateTime; ToString ("o") utilise le spécificateur de format aller-retour de .NET qui génère une chaîne de date conforme à la norme ISO 8601

new MyInfo {
    CreationDate = r.CreationDate.ToString("o"),
};

En JavaScript

juste après avoir récupéré le JSON je vais fixer les dates à être des objets Date Javascript en utilisant le constructeur de Date qui accepte une chaîne de date ISO 8601...

$.getJSON(
    "MyRestService.svc/myinfo",
    function (data) {
        $.each(data.myinfos, function (r) {
            this.CreatedOn = new Date(this.CreationDate);
        });
        // Now each myinfo object in the myinfos collection has a CreatedOn field that is a real JavaScript date (with timezone intact).
       alert(data.myinfos[0].CreationDate.toLocaleString());
    }
)

une fois que vous avez une date JavaScript, vous pouvez utiliser toutes les méthodes de Date commodes et fiables comme toDateString , toLocaleString , etc.

14
répondu activescott 2014-11-09 13:58:48
la source
var obj = eval('(' + "{Date: \/Date(1278903921551)\/}".replace(/\/Date\((\d+)\)\//gi, "new Date()") + ')');
var dateValue = obj["Date"];
9
répondu 在路上 2011-07-01 13:08:10
la source

vérifier la date de la norme ISO; comme ceci:

yyyy.MM.ddThh:mm

devient 2008.11.20T22:18 .

8
répondu Thomas Hansen 2014-11-09 13:17:34
la source

je obtenir la date comme ceci:

"/Date(1276290000000+0300)/"

dans certains exemples, la date est dans des formats légèrement différents:

"/Date(12762900000000300)/"
"Date(1276290000000-0300)"

etc.

alors J'ai trouvé le RegExp suivant:

/\/+Date\(([\d+]+)\)\/+/

et le code final est:

var myDate = new Date(parseInt(jsonWcfDate.replace(/\/+Date\(([\d+-]+)\)\/+/, '')));

J'espère que ça aidera.

mise à jour: J'ai trouvé ce lien de Microsoft: Comment puis-je sérialiser les Dates avec JSON?

Cela semble être celui que nous recherchons tous.

7
répondu Michael Vashchinsky 2010-10-03 11:34:40
la source

c'est frustrant. Ma solution a été de séparer le " / et /" de la valeur générée par ASP.NET 's JavaScriptSerializer de sorte que, bien que JSON peut ne pas avoir une date littérale, il obtient encore interprété par le navigateur comme une date, ce qui est tout ce que je veux vraiment: {"myDate":Date(123456789)}

Personnalisé JavaScriptConverter pour DateTime?

je dois souligner l'exactitude du commentaire de Roy Tinker. Ce n'est pas légal JSON. C'est un sale, sale hack sur le serveur à supprimer le problème avant qu'il ne devienne un problème de JavaScript. Ça va étouffer un JSON parser. Je l'ai utilisé pour décoller, mais je ne l'utilise plus. Cependant, je pense toujours que la meilleure réponse réside dans le fait de changer la façon dont le serveur formate la date, par exemple, ISO comme mentionné ailleurs.

7
répondu StarTrekRedneck 2017-05-23 13:31:37
la source

ajouter le jQuery UI plugin dans votre page:

function DateFormate(dateConvert) {
    return $.datepicker.formatDate("dd/MM/yyyy", eval('new ' + dateConvert.slice(1, -1)));
};
7
répondu ThulasiRam 2014-11-09 13:59:22
la source

ci-dessous est une solution assez simple pour analyser les dates JSON. Utiliser les fonctions ci-dessous selon votre condition. Vous avez juste besoin de passer la Date de format JSON récupérée comme paramètre aux fonctions ci-dessous:

function JSONDate(dateStr) {
    var m, day;
    jsonDate = dateStr;
    var d = new Date(parseInt(jsonDate.substr(6)));
    m = d.getMonth() + 1;
    if (m < 10)
        m = '0' + m
    if (d.getDate() < 10)
        day = '0' + d.getDate()
    else
        day = d.getDate();
    return (m + '/' + day + '/' + d.getFullYear())
}

function JSONDateWithTime(dateStr) {
    jsonDate = dateStr;
    var d = new Date(parseInt(jsonDate.substr(6)));
    var m, day;
    m = d.getMonth() + 1;
    if (m < 10)
        m = '0' + m
    if (d.getDate() < 10)
        day = '0' + d.getDate()
    else
        day = d.getDate();
    var formattedDate = m + "/" + day + "/" + d.getFullYear();
    var hours = (d.getHours() < 10) ? "0" + d.getHours() : d.getHours();
    var minutes = (d.getMinutes() < 10) ? "0" + d.getMinutes() : d.getMinutes();
    var formattedTime = hours + ":" + minutes + ":" + d.getSeconds();
    formattedDate = formattedDate + " " + formattedTime;
    return formattedDate;
}
7
répondu Umar Malik 2014-11-09 14:00:49
la source

Une fin de post, mais pour ceux qui ont cherché ce post.

imaginez ceci:

    [Authorize(Roles = "Administrator")]
    [Authorize(Roles = "Director")]
    [Authorize(Roles = "Human Resources")]
    [HttpGet]
    public ActionResult GetUserData(string UserIdGuidKey)
    {
        if (UserIdGuidKey!= null)
        {
            var guidUserId = new Guid(UserIdGuidKey);
            var memuser = Membership.GetUser(guidUserId);
            var profileuser = Profile.GetUserProfile(memuser.UserName);
            var list = new {
                              UserName = memuser.UserName,
                              Email = memuser.Email ,
                              IsApproved = memuser.IsApproved.ToString() ,
                              IsLockedOut = memuser.IsLockedOut.ToString() ,
                              LastLockoutDate = memuser.LastLockoutDate.ToString() ,
                              CreationDate = memuser.CreationDate.ToString() ,
                              LastLoginDate = memuser.LastLoginDate.ToString() ,
                              LastActivityDate = memuser.LastActivityDate.ToString() ,
                              LastPasswordChangedDate = memuser.LastPasswordChangedDate.ToString() ,
                              IsOnline = memuser.IsOnline.ToString() ,
                              FirstName = profileuser.FirstName ,
                              LastName = profileuser.LastName ,
                              NickName = profileuser.NickName ,
                              BirthDate = profileuser.BirthDate.ToString() ,
            };
            return Json(list, JsonRequestBehavior.AllowGet);
        }
        return Redirect("Index");
    }

comme vous pouvez le voir, j'utilise la fonctionnalité de C# 3.0 pour créer les génériques" Auto". C'est un peu paresseux, mais j'aime ça et ça marche. Juste une note: Profile est une classe personnalisée que j'ai créé pour mon projet d'application web.

6
répondu Ray Linder 2009-10-23 10:39:45
la source

Mootools solution:

new Date(Date(result.AppendDts)).format('%x')

nécessite mootools-more. Testé avec mootools-1.2.3.1-plus sur Firefox 3.6.3 et IE 7.0.5730.13

6
répondu Midhat 2010-09-21 16:18:50
la source

vous pouvez également utiliser la bibliothèque JavaScript moment.js , ce qui est pratique lorsque vous prévoyez traiter avec différents formats localisés et effectuer d'autres opérations avec des valeurs de dates:

function getMismatch(id) {
    $.getJSON("Main.aspx?Callback=GetMismatch",
    { MismatchId: id },

    function (result) {
        $("#AuthMerchId").text(result.AuthorizationMerchantId);
        $("#SttlMerchId").text(result.SettlementMerchantId);
        $("#CreateDate").text(moment(result.AppendDts).format("L"));
        $("#ExpireDate").text(moment(result.ExpiresDts).format("L"));
        $("#LastUpdate").text(moment(result.LastUpdateDts).format("L"));
        $("#LastUpdatedBy").text(result.LastUpdateNt);
        $("#ProcessIn").text(result.ProcessIn);
    }
    );
    return false;
}

configurer la localisation est aussi facile que d'ajouter des fichiers de configuration (vous les obtenez à momentjs.com) à votre projet et la configuration de la langue:

moment.lang('de');
6
répondu martinoss 2014-11-09 14:04:43
la source

POUR INFO, pour toute personne utilisant Python du côté serveur: datetime.datetime ().ctime () retourne une chaîne de caractères qui est nativement parsable par "new Date ()". C'est, si vous créez un nouveau type datetime.instance datetime (comme avec datetime.datetime.maintenant), la chaîne peut être incluse dans la chaîne JSON, puis cette chaîne peut être passée comme premier argument au constructeur de Date. Je n'ai pas encore trouvé d'exceptions, mais je ne l'ai pas testé de manière trop rigoureuse non plus.

5
répondu Kyle Alan Hale 2010-07-08 05:19:36
la source

Ce qui si .NET les retours...

return DateTime.Now.ToString("u"); //"2013-09-17 15:18:53Z"

puis en JavaScript...

var x = new Date("2013-09-17 15:18:53Z");
5
répondu Juan Carlos Puerto 2014-11-09 14:06:30
la source

cela peut aussi vous aider.

 function ToJavaScriptDate(value) { //To Parse Date from the Returned Parsed Date
        var pattern = /Date\(([^)]+)\)/;
        var results = pattern.exec(value);
        var dt = new Date(parseFloat(results[1]));
        return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
    }
5
répondu Ravi Mehta 2016-02-02 14:57:13
la source

Autres questions sur asp.net jquery ajax json