#json #jqgrid
#json #jqgrid
Вопрос:
Я использую jqgrid и у меня есть столбцы, в которых отображается дата, но с сервера дата отображается в формате json, как показано ниже,
"CommentedDate": "/Date(1304324941000 0530)/"
Как я могу правильно отобразить дату в формате ММ / дд / гггг?
Виджая Ананд
Ответ №1:
Если вы используете предопределенный форматировщик 'date'
и jqGrid 4.0, он должен работать автоматически. Попробуйте, например, использовать следующие свойства для столбца, содержащего дату:
formatter:'date', formatoptions: {newformat:'m/d/Y'}
Комментарии:
1. Спасибо за ваш ответ. Но это происходит как NaN / NaN / NaN.
2. @Vijaya Anand: Используете ли вы jqGrid 4.0.0 ?
3. извините, что не упомянул, что это 3.8.2.
4. @Oleg: Могут ли возникнуть какие-либо проблемы, если я выполню обновление до 4.0?
5. @Vijaya Anand: Я не понимаю, добились ли вы успеха после обновления с 3.8.2 до 4.0.0? Если вы действительно не можете перейти на новую версию, вы можете устранить проблему, заменив в
jquery.jqGrid.min.js
части 3.8.2 текст/^/Date((([- ])?[0-9] )(([- ])([0-9]{2})([0-9]{2}))?)/$/
на/^/Date((([- ])?[0-9] )(([- ])([0-9]{2})([0-9]{2}))?)/$/
.
Ответ №2:
Я решил проблему NaN / NaN / NaN для поля даты, вручную изменив jquery.jqgrid.src.js (4.5.2). В моем случае ответ json вернул бы дату в формате ‘ISO1860Long’. Раньше это работало до версии 4.1.2 jqgrid
Найдите функцию «parseDate»; перейдите к строке после :
if( opts.masks.hasOwnProperty(format) ) { format = opts.masks[format]; }
if(date amp;amp; date != null) {
и добавьте нижеприведенную проверку, если :
if(date.constructor === Number) {
if(String(format).toLowerCase() == "u") {
date = date*1000;
}
timestamp = new Date(date);
} else
перед существующим :
if( !isNaN( date - 0 ) amp;amp; String(format).toLowerCase() === "u") {
вы можете перевести изменения в jquery.jqgrid.min.js самостоятельно, ЕСЛИ необходимо