Как форматировать дату/время с помощью шаблонов jQuery?

Я только начал использовать jQuery Templates в качестве моего механизма шаблонов javascript. Мой вопрос в том, как я могу отформатировать дату (возвращенную из ASP.NET Json ActionResult) в форме:

/Date(1288709830000)/

Я пробовал сделать следующее:

{{= $.format(new Date(parseInt(comment.DateCreated.substr(6))), 'd')}}

Обратите внимание, что вышеописанный использует новый плагин глобализации jquery для добавления метода $.format. Также обратите внимание, что {{= comment.DateCreated }} является длинной рукой для выражения ${comment.DateCreated}.

Я бы очень признателен, если бы вы могли помочь.

4 ответа

Это действительно работает. Я использовал бета-версию, размещенную на CDN Microsoft. Если вы загружаете последнюю версию, все работает так, как ожидалось.


Это то, что я использовал

var formatDate = function (datetime) {
 var dateObj = new Date(parseInt(datetime.replace("/Date(", "").replace(")/", ""), 10));
 return dateObj.format("dd-MMM-yyyy"); //01-Jun-2001
}

И это в моем шаблоне JQuery

${FormatDate (InceptionDate)}


Я придумал очень хакерское решение. Если вы добавили на страницу следующую функцию:

function format(o, t) {
 return $.format(o, t);
}

Вы можете изменить выражение следующим образом:

{{= format(new Date(parseInt(comment.DateCreated.substr(6))), 'd') }}

И он отлично работает. Кажется странным, что два плагина, созданных Microsoft, конфликтуют таким образом.


Чтобы форматировать datetime в шаблоне jQuery, вы можете написать такую ​​функцию, как:

function formatDate(datetime) {
 var dateObj = new Date(datetime);
 var dateStr = (dateObj.getMonth()+1) + "/" + dateObj.getDate() + "/" + dateObj.getFullYear();
 return dateStr; // will return mm/dd/yyyy
}

Затем вы можете вызвать эту функцию из шаблона jQuery следующим образом: ${formatDate(comment.DateCreated)}

Подробнее см. http://api.jquery.com/template-tag-equal

licensed under cc by-sa 3.0 with attribution.