Как мне отформатировать дату Microsoft JSON?

Я беру свою первую трещину в Ajax с jQuery. Я перенесу свои данные на свою страницу, но у меня возникли проблемы с данными JSON, которые возвращаются для типов данных Date. По сути, я получаю строку, которая выглядит следующим образом:

/Date(1224043200000)/

От кого-то совершенно нового для JSON - Как мне отформатировать это в короткий формат даты? Должно ли это быть обработано где-то в коде jQuery? Я попробовал плагин jQuery.UI.datepicker, используя $.datepicker.formatDate() без какого-либо успеха.

К вашему сведению: вот решение, которое я придумал, используя комбинацию ответов здесь:

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

Это решение получило мой объект из метода обратного вызова и правильно отобразило даты на странице, используя библиотеку формата даты.

вопрос задан 15.10.2008
Mark Struzinski
17820 репутация

39 ответов


  • 1584 рейтинг

    Eval не требуется. Это будет работать нормально:

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

    Функция substr извлекает часть "/ Date (", а функция parseInt получает целое число и игнорирует ") /" в конце. Полученное число передается в конструктор Date.

    РЕДАКТИРОВАТЬ: я намеренно пропустил основание (2-й аргумент для parseInt); см. мой комментарий ниже . Кроме того, я полностью согласен с комментарием Рори : даты ISO-8601 предпочтительнее этого старого формата - поэтому этот формат обычно не следует использовать для новой разработки. Смотрите отличный Json. NET библиотека для отличной альтернативы, которая сериализует даты, используя формат ISO-8601.

    Для дат JSON в формате ISO-8601 просто передайте строку в конструктор Date:

    var date = new Date(jsonDate); //no ugly parsing needed; full timezone support
    
    ответ дан Roy Tinker, с репутацией 9227, 23.02.2010
  • 116 рейтинг

    Вы можете использовать это, чтобы получить дату от JSON:

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

    А затем вы можете использовать сценарий JavaScript Date Format (1. 2 КБ, когда минимизированы и сжаты), чтобы отобразить его как хотите.

    ответ дан Panos, с репутацией 16598, 15.10.2008
  • 85 рейтинг

    Для тех, кто использует Newtonsoft Json. NET , читайте о том, как это сделать через Собственный JSON в IE8, Firefox 3. 5 плюс Джсон. NET .

    Также документация по изменению формата дат написана Json. NET полезно: Сериализация дат с Json. NET

    Для тех, кто слишком ленив, вот быстрые шаги. Поскольку JSON имеет свободную реализацию DateTime, вам нужно использовать IsoDateTimeConverter(). Обратите внимание, что так как Json. NET 4. 5 формат даты по умолчанию - ISO, поэтому приведенный ниже код не требуется.

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

    JSON будет проходить как

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

    Наконец, немного JavaScript для преобразования даты ISO в дату 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;
    }
    

    Я использовал это так

    $("").text(isoDateReviver(item.fieldName).toLocaleString()).appendTo("#" + divName);
    
    ответ дан Jason Jong, с репутацией 3612, 19.01.2010
  • 56 рейтинг

    Оригинальный пример:

    /Date(1224043200000)/  
    

    не отражает форматирование, используемое WCF при отправке дат через WCF REST с использованием встроенной сериализации JSON. (по крайней мере, на. NET 3. 5, SP1)

    Я нашел ответ здесь полезным, но требуется небольшое редактирование регулярного выражения, так как кажется, что смещение часового пояса GMT добавляется к числу, возвращенному (с 1970 года) в WCF JSON.

    В службе WCF у меня есть:

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

    ApptVisitLinkInfo определяется просто:

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

    Когда «Field2» возвращается как Json из службы, значение равно:

    /Date(1224043200000-0600)/
    

    Обратите внимание на смещение часового пояса, включенное как часть значения.

    Модифицированное регулярное выражение:

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

    Это немного более нетерпеливо и захватывает все между скобками, а не только первое число. Полученное время sinze 1970, плюс смещение часового пояса, все могут быть переданы в eval для получения объекта даты.

    Результирующая строка JavaScript для замены:

    replace(/\/Date\((.*?)\)\//gi, "new Date($1)");
    
    ответ дан Aaron, с репутацией 735, 30.12.2009
  • 54 рейтинг

    Не повторяйте себя - автоматизируйте преобразование даты с помощью $.parseJSON()

    Ответы на ваше сообщение обеспечивают ручное преобразование даты в даты JavaScript. Я чуть-чуть расширил jQuery $.parseJSON(), чтобы он мог автоматически разбирать даты, когда вы указываете это. Обрабатывает ASP. NET форматированные даты (/Date(12348721342)/), а также даты в формате ISO (2010-01-01T12.34.56.789Z), которые поддерживаются встроенными функциями JSON в браузерах (и библиотеках, таких как json2). JS).

    Во всяком случае. Если вы не хотите повторять ваш код преобразования даты снова и снова, я предлагаю вам прочитать этот пост и получить код, который сделает вашу жизнь немного проще.

    ответ дан Robert Koritnik, с репутацией 75450, 27.12.2010
  • 51 рейтинг

    Если вы говорите в JavaScript,

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

    вы увидите, что это правильная дата, и вы можете использовать ее в любом месте кода JavaScript с любым фреймворком.

    ответ дан John Boker, с репутацией 65958, 15.10.2008
  • 48 рейтинг

    Нажмите здесь, чтобы проверить демонстрацию

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

    Результат - «15.10.2008»

    ответ дан Umar Malik, с репутацией 43, 17.03.2013
  • 31 рейтинг

    Обновлено

    У нас есть внутренняя библиотека пользовательского интерфейса, которая справляется как с ASP Microsoft. NET встроенный формат JSON, такой как /Date(msecs)/, изначально задавался здесь, и большинство форматов даты JSON, включая JSON. NET, как 2014-06-22T00:00:00.0. Кроме того, нам нужно справиться с неспособностью 3518879646 oldIE справиться с чем-либо, кроме 3 десятичных знаков .

    Сначала мы определяем, какую дату мы потребляем, анализируем ее в обычный объект JavaScript Date, а затем форматируем ее.

    1) Определить формат даты Microsoft

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

    2) Определить формат даты 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) Parse MS формат даты:

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

    4) Разобрать формат даты ISO.

    У нас есть, по крайней мере, способ убедиться, что мы имеем дело со стандартными датами ISO или датами ISO, измененными так, чтобы они всегда имели три миллисекундные точки (, см. Выше ), поэтому код зависит от среды.

    4a) Разобрать стандартный формат даты ISO, справиться с проблемами oldIE:

    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) Разобрать формат ISO с фиксированным трех миллисекундным десятичным знаком - намного проще:

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

    5) Отформатируйте его:

    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) Свяжите все это вместе:

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

    Приведенный ниже старый ответ полезен для привязки этого форматирования даты к собственному анализу JSON jQuery, чтобы вы получали объекты Date вместо строк или если вы все еще застряли в jQuery & lt; 1. 5 как-то.

    Старый ответ

    Если вы используете jQuery 1. 4-х функция Ajax с ASP. NET MVC, вы можете превратить все свойства DateTime в объекты Date с помощью:

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

    В jQuery 1. 5 вы можете избежать переопределения метода parseJSON глобально, используя опцию преобразователей в вызове Ajax.

    http: // api. JQuery. ком / JQuery. ajax /

    К сожалению, вам нужно переключиться на более старый маршрут eval, чтобы Dates мог анализироваться глобально, иначе вам нужно конвертировать их в более индивидуальном порядке после анализа.

    ответ дан Chris Moschini, с репутацией 25057, 7.02.2011
  • 21 рейтинг

    Мне также пришлось искать решение этой проблемы, и в итоге я наткнулся на момент. js - хорошая библиотека, которая может анализировать этот формат даты и многое другое.

    var d = moment(yourdatestring)
    

    Это избавило меня от головной боли, поэтому я решил поделиться с вами. :)
    Вы можете найти больше информации об этом здесь: http: // momentjs. com /

    ответ дан Venemo, с репутацией 11587, 15.05.2013
  • 21 рейтинг

    В итоге я добавил символы "в регулярное выражение Panos, чтобы избавиться от символов, сгенерированных сериализатором Microsoft для записи объектов во встроенный скрипт:

    Так что, если у вас есть свойство в вашем C # код позади это что-то вроде

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

    И в вашем aspx у вас есть

    
    
    

    Вы получите что-то вроде

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

    Обратите внимание на двойные кавычки.

    Чтобы получить это в форме, которую eval будет правильно десериализовать, я использовал:

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

    Я использую Prototype и для его использования я добавил

    String.prototype.evalJSONWithDates = function() {
        var jsonWithDates = this.replace(/"\/Date\((\d+)\)\/"/g, 'new Date($1)');
        return jsonWithDates.evalJSON(true);
    }
    
    ответ дан Chris Woodward, с репутацией 136, 9.10.2009
  • 20 рейтинг

    Нет встроенного типа даты в JSON . Это похоже на количество секунд / миллисекунд от некоторой эпохи. Если вы знаете эпоху, вы можете создать дату, добавив нужное количество времени.

    ответ дан johnstok, с репутацией 39564, 15.10.2008
  • 19 рейтинг

    В jQuery 1. 5, если у вас есть JSON2. JS для старых браузеров, вы можете десериализовать все даты из Ajax следующим образом:

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

    Я включил логику, которая предполагает, что вы отправляете все даты с сервера в формате UTC (что вам следует); Затем потребитель получает объект JavaScript Date, который имеет правильное значение тиков, чтобы отразить это. То есть звонят getUTCHours() и т. Д. в тот же день вернет то же значение, что и на сервере, а вызов getHours() вернет значение в местном часовом поясе пользователя, как определено его браузером.

    Это не учитывает формат WCF со смещением часового пояса, хотя его было бы относительно легко добавить.

    ответ дан Domenic, с репутацией 76775, 8.04.2011
  • 17 рейтинг

    Не переусердствуйте. Как и в течение десятилетий, передайте числовое смещение от стандартной фактической эпохи 1 января 1970 года в полночь по Гринвичу / UTC / & amp; c в секундах (или миллисекундах) с этой эпохи. JavaScript нравится, Java нравится, C нравится, а Интернету нравится.

    ответ дан Jé Queue, с репутацией 6349, 30.10.2009
  • 17 рейтинг

    Использование средства выбора даты jQuery UI - действительно имеет смысл, только если вы уже включили интерфейс jQuery:

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

    вывод:

    15 октября 2008 г.

    ответ дан dominic, с репутацией 31, 30.08.2011
  • 16 рейтинг

    Каждый из этих ответов имеет одну общую черту: все они хранят даты как одно значение (обычно строку).

    Еще один вариант - воспользоваться встроенной структурой JSON и представить дату в виде списка чисел:

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

    Конечно, вы должны убедиться, что оба конца разговора согласуются с форматом (год, месяц, день) и полями, которые должны быть датами. , , но у него есть то преимущество, что он полностью исключает проблему преобразования даты в строку. Это все числа - никаких строк. Кроме того, использование порядка: год, месяц, день также позволяет правильно сортировать по дате.

    Просто подумайте нестандартно - дату JSON не нужно хранить в виде строки.

    Другим преимуществом такого способа является то, что вы можете легко (и эффективно) выбирать все записи для данного года или месяца, используя CouchDB , обрабатывающий запросы к значениям массива.

    ответ дан Nick Perkins, с репутацией 4251, 17.06.2011
  • 15 рейтинг

    Размещение в потрясающей теме:

    var d = new Date(parseInt('/Date(1224043200000)/'.slice(6, -2)));
    alert('' + (1 + d.getMonth()) + '/' + d.getDate() + '/' + d.getFullYear().toString().slice(-2));
    
    ответ дан Dan Beam, с репутацией 2827, 26.09.2010
  • 14 рейтинг
    var newDate = dateFormat(jsonDate, "mm/dd/yyyy"); 
    

    Есть ли другой вариант без использования библиотеки jQuery?

    ответ дан Bilgin Kılıç, с репутацией 2581, 24.09.2009
  • 14 рейтинг

    Просто чтобы добавить еще один подход, «тиковый подход», который использует WCF , склонен к проблемам с часовыми поясами, если вы не очень осторожны, как описано здесь 315117729 и в других местах. Так что я сейчас использую формат ISO 8601, который оба. NET & amp; Поддержка JavaScript должным образом, которая включает смещения часового пояса. Ниже приведены детали:

    В WCF /. ЧИСТЫЙ:

    Где CreationDate - это система. DateTime; ToString ("o") использует. NET Спецификатор формата туда и обратно , который генерирует строку даты в соответствии с ISO 8601

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

    В JavaScript

    Сразу после получения JSON я исправляю даты, чтобы быть объектами JavaSript Date, используя конструктор 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());
        }
    )
    

    Когда у вас есть дата JavaScript, вы можете использовать все удобные и надежные методы Date, такие как toDateString , toLocaleString и т. Д.

    ответ дан Scott Willeke, с репутацией 6329, 24.05.2012
  • 9 рейтинг
    var obj = eval('(' + "{Date: \/Date(1278903921551)\/}".replace(/\/Date\((\d+)\)\//gi, "new Date($1)") + ')');
    var dateValue = obj["Date"];
    
    ответ дан 在路上, с репутацией 31, 1.07.2011
  • 8 рейтинг

    Проверьте дату стандарта ИСО; вроде как это:

    yyyy.MM.ddThh:mm
    

    Это становится 2008.11.20T22:18.

    ответ дан Thomas Hansen, с репутацией 4373, 20.11.2008
  • 7 рейтинг

    Я получаю дату как это:

    "/Date(1276290000000+0300)/"
    

    В некоторых примерах дата представлена ​​в несколько разных форматах:

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

    и т. Д.

    Итак, я придумал следующий RegExp:

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

    и окончательный код:

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

    Надеюсь, это поможет.

    Обновление: Я нашел эту ссылку от Microsoft: Как мне сериализовать даты с помощью JSON?

    Это похоже на то, что мы все ищем.

    ответ дан Michael Vashchinsky, с репутацией 1661, 26.09.2010
  • 7 рейтинг

    Это расстраивает. Мое решение состояло в том, чтобы разобрать «/ и /» из значения, сгенерированного ASP. JavaScriptSerializer от NET, так что, хотя JSON может не иметь литерала даты, он все равно интерпретируется браузером как дата, и это все, чего я действительно хочу: {"myDate":Date(123456789)}

    Пользовательский JavaScriptConverter для DateTime?

    Я должен подчеркнуть точность комментария Роя Тинкера. Это не законный JSON. Это грязный, грязный хак на сервере, чтобы удалить проблему, прежде чем она станет проблемой для JavaScript. Он захлебнется парсером JSON. Я использовал это для того, чтобы оторваться от земли, но я больше не использую это. Тем не менее, я все еще чувствую, что лучший ответ заключается в изменении того, как сервер форматирует дату, например, ISO, как упоминалось в другом месте.

    ответ дан StarTrekRedneck, с репутацией 1767, 14.10.2010
  • 7 рейтинг

    Ниже приведено довольно простое решение для анализа дат JSON. Используйте следующие функции согласно вашему требованию. Вам просто нужно передать формат даты JSON, выбранный в качестве параметра для функций ниже:

    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;
    }
    
    ответ дан Umar Malik, с репутацией 43, 9.08.2012
  • 7 рейтинг

    Добавьте на страницу плагин jQuery UI :

    function DateFormate(dateConvert) {
        return $.datepicker.formatDate("dd/MM/yyyy", eval('new ' + dateConvert.slice(1, -1)));
    };
    
    ответ дан Thulasiram, с репутацией 6824, 29.06.2012
  • 6 рейтинг

    Вы также можете использовать библиотеку JavaScript момент. js , который пригодится, когда вы планируете работать с различными локализованными форматами и выполнять другие операции со значениями дат:

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

    Настроить локализацию так же просто, как добавить файлы конфигурации (вы получаете их в тот момент. com) к вашему проекту и настройке языка:

    moment.lang('de');
    
    ответ дан martinoss, с репутацией 2303, 15.05.2013
  • 6 рейтинг

    Поздний пост, но для тех, кто искал этот пост.

    Представьте себе это:

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

    Как видите, я использую C # 3. Функция 0 для создания Обобщения "Авто". Это немного лениво, но мне это нравится, и это работает. Просто примечание: профиль - это пользовательский класс, который я создал для своего проекта веб-приложения.

    ответ дан Ray Linder, с репутацией 121, 23.10.2009
  • 6 рейтинг

    Mootools решение:

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

    Требуется mootools-more. Проверено с помощью mootools-1. 2. 3. 1 больше на Firefox 3. 6. 3 и IE 7. 0. 5730. 13

    ответ дан Midhat, с репутацией 10736, 13.05.2010
  • 5 рейтинг

    К вашему сведению, для тех, кто использует Python на стороне сервера: datetime. Дата и время (). ctime () возвращает строку, которая изначально анализируется с помощью «new Date ()». То есть, если вы создаете новую дату и время. экземпляр datetime (например, с datetime. Дата и время. now), строка может быть включена в строку JSON, а затем эта строка может быть передана в качестве первого аргумента в конструктор Date. Я еще не нашел каких-либо исключений, но я также не проверял это слишком строго.

    ответ дан Kyle Alan Hale, с репутацией 21, 8.07.2010
  • 5 рейтинг

    Что, если . NET возвращается. , ,

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

    А потом в JavaScript. , ,

    var x = new Date("2013-09-17 15:18:53Z");
    
    ответ дан Juan Carlos Puerto, с репутацией 1853, 17.09.2013
  • 5 рейтинг

    Это может также помочь вам.

     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();
        }
    
    ответ дан Ravi Mehta, с репутацией 314, 2.02.2016
  • 2 рейтинг

    В следующем коде. У меня

    1. Извлечена метка времени из строки даты.

    2. И разобрал его в Int

    3. Наконец создан Date с его помощью.

    var dateString = "/Date(1224043200000)/";
    var seconds = parseInt(dateString.replace(/\/Date\(([0-9]+)[^+]\//i, "$1"));
    var date = new Date(seconds);
    console.log(date);
    ответ дан Harun Diluka Heshan, с репутацией 769, 9.03.2018
  • 1 рейтинг

    В качестве примечания, KendoUI поддерживает преобразование даты Microsoft JSON. Итак, если ваш проект имеет ссылку на «KendoUI», вы можете просто использовать

    var newDate = kendo.parseDate(jsonDate);
    
    ответ дан Safeer Hussain, с репутацией 779, 27.11.2013
  • 1 рейтинг

    Это использует регулярное выражение , и оно также работает:

    var date = new Date(parseInt(/^\/Date\((.*?)\)\/$/.exec(jsonDate)[1], 10));
    
    ответ дан Vlad Bezden, с репутацией 24947, 25.08.2014
  • 1 рейтинг

    Самый простой способ, который я могу предложить, это использовать регулярные выражения для JS как:

    //Only use [0] if you are sure that the string matches the pattern
    //Otherwise, verify if 'match' returns something
    "/Date(1512488018202)/".match(/\d+/)[0] 
    
    ответ дан Reuel Ribeiro, с репутацией 514, 5.12.2017
  • 1 рейтинг

    Другой пример регулярного выражения, который вы можете попробовать использовать:

    var mydate = json.date
    var date = new Date(parseInt(mydate.replace(/\/Date\((-?\d+)\)\//, '$1');
    mydate = date.getMonth() + 1 + '/' + date.getDate() + '/' + date.getFullYear();
    

    date.getMonth() возвращает целое число от 0 до 11, поэтому мы должны добавить 1, чтобы получить правильный номер месяца в мудром

    ответ дан Luminous, с репутацией 980, 6.08.2015
  • 0 рейтинг

    Я использую эту простую функцию для получения даты из Microsoft JSON Date

    function getDateValue(dateVal) {
        return new Date(parseInt(dateVal.replace(/\D+/g, '')));
    };
    

    replace(/\D+/g, '') удалит все символы кроме цифр

    parseInt преобразует строку в число

    Использование

    var $scope.ReturnDate = getDateValue(result.JSONDateVariable)
    
    ответ дан Vignesh Subramanian, с репутацией 3542, 11.05.2018
  • 0 рейтинг

    Дата JSON легко преобразовать в дату JavaScript:

    var s = Response.StartDate;     
    s = s.replace('/Date(', '');
    
    s = s.replace(')/', '');
    
    var expDate = new Date(parseInt(s));
    
    ответ дан Umar Malik, с репутацией 43, 10.12.2012
  • 0 рейтинг

    Попробуйте это. , ,

    function formatJSONDate(jsonDate) {
                var date = jsonDate;
                var parsedDate = new Date(parseInt(date.toString().substring(6)));
                var newDate = new Date(parsedDate);
                var getMonth = newDate.getMonth() + 1;
                var getDay = newDate.getDay();
                var getYear = newDate.getYear();
                var standardDate = (getMonth<10 ? '0' : '') + getMonth + '/' + (getDay<10 ? '0' : '') + getDay + '/' + getYear;
                return standardDate;
            }
    
    ответ дан Noor All Safaet, с репутацией 139, 6.07.2018
  • -5 рейтинг

    Ваш JSON, вероятно, должен возвращать какой-либо объект (ну, его строковое представление).

    "{ myDate : Date(1224043200000) }"
    

    Используя jQuery, вы можете получить доступ к вашему объекту данных следующим образом:

    $.get(
        "myJSONFile.php",
        function (data) {
            // data.myDate will be a date object.
    
            // to show in a short date format (eg: dd/mm/yyyy)
            alert (
                data.myDate.getDate() + "/"
                + (data.myDate.getMonth() + 1) + "/"
                + data.myDate.getFullYear()
            ); // alerts: "15/10/2008"
        }
    );
    
    ответ дан nickf, с репутацией 362144, 16.10.2008