Проблема с регистрационным форматом даты в json с помощью jqgrid

#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 самостоятельно, ЕСЛИ необходимо