Привязка даты в Asp.Net с использованием Knockout

У меня проблема с привязкой даты и времени в beatpicker при извлечении данных из базы данных. В сборщике он отображается как: /Date(1465323300000)/ , KOJS как:

DematRenounced.js

 if (obj.ResponseData != null) {
                                                 if (obj.ResponseData.length > 0) {
                                                     var DematRenouncedEntry = obj.ResponseData[0];
                                                     
                                                     self.entrydate(DematRenouncedEntry.entrydate);
                                               
                                             }

и просмотреть как:

DematRenounceEntry.aspx

  <input type="text" id="txtEntryDate" data-beatpicker="true" class="form-control"
                                        data-bind="value:entrydate" maxlength="10" onblur="return valFutureDate(this,'Y',true);"
                                        onpaste="return false" onkeypress="return isNumberKey(event)"
                                        placeholder="YYYY.MM.DD" />

person Community    schedule 08.06.2016    source источник
comment
everythingjs.blogspot.co.uk/ 2012/03/ .. в основном использует регулярное выражение для анализа даты и последующего преобразования в формат дд-мм-гггг.   -  person Rohith Nair    schedule 08.06.2016


Ответы (3)


Данные, возвращаемые с сервера, по-видимому, сериализуются с помощью Microsoft JsonSerializer, который использует нестандартный формат при сериализации свойств DateTime. Подробнее см. в этом ответе: https://stackoverflow.com/a/726869/4602079.

Что вам нужно сделать, прежде чем вы сможете что-либо сделать с датой на клиенте, так это проанализировать ее как дату. В вашем случае вы можете изменить DematRenounced.js следующим образом:

self.entrydate(new Date(parseInt(DematRenouncedEntry.entrydate.replace("/Date(", "").replace(")/",""), 10)));
person Maciej Grzyb    schedule 08.06.2016

После ответа Maciej Grzyb наконец-то я получил решение.

   var t = new Date(parseInt(DematRenouncedEntry.entrydate.replace("/Date(", "").replace(")/", ""), 10));

                                             var m = t.getMonth();
                                             var d = t.getDate();
                                             function addZ(m) { return m < 10 ? '0' + m : '' + m; };
                                             function addZy(d) { return d < 10 ? '0' + d : '' + d; };
                                             var y = t.getFullYear();
                                             var format = y + "." + addZ(m) + "." + addZy(d);
                                             self.entrydate(format);
person Community    schedule 09.06.2016

Я бы проверил это: https://stackoverflow.com/a/18555136/1455010

Измените конвертер Json для форматирования даты в формате ISO: 2016-06-16T18:52:36+00:00

person Nate    schedule 16.06.2016