Как настроить дату Microsoft JSON?

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

/Date(1224043200000)/

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

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

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

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

+1817
15 окт. '08 в 20:43
источник поделиться
39 ответов
  • 1
  • 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);
+4
09 мар. '18 в 8:22
источник

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

var newDate = kendo.parseDate(jsonDate);
+1
27 нояб. '13 в 9:02
источник

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

var date = new Date(parseInt(/^\/Date\((.*?)\)\/$/.exec(jsonDate)[1], 10));
+1
25 авг. '14 в 16:44
источник

Еще один пример регулярного выражения, который вы можете попробовать:

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, чтобы получить правильный номер месяца

+1
06 авг. '15 в 11:37
источник

Самый простой способ, который я могу предложить, - использовать regex на 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] 
+1
05 дек. '17 в 15:37
источник

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

var s = Response.StartDate;     
s = s.replace('/Date(', '');

s = s.replace(')/', '');

var expDate = new Date(parseInt(s));
0
10 дек. '12 в 9:39
источник

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

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

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

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

Применение

var $scope.ReturnDate = getDateValue(result.JSONDateVariable)
0
11 мая '18 в 12:28
источник

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

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;
        }
0
06 июл. '18 в 10:43
источник

Ваш 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"
    }
);
-5
16 окт. '08 в 3:47
источник
  • 1
  • 2

Посмотрите другие вопросы по меткам или Задайте вопрос