время обработки данных отличается от времени базы данных

#javascript #jquery #ajax #datatable

#javascript #jquery #ajax #datatable

Вопрос:

Я пытаюсь показать время базы данных в таблице данных, но проблема в том, что отображается текущее время

см. раздел Время базы данных

введите описание изображения здесь

см. раздел Время обработки данных

введите описание изображения здесь

.cshtml

 $.ajax({  
                url: strUrl,  
                type: 'POST',  
                success: function (result) {  
                      
                    console.log("inside the success method")  
                    $('#').DataTable({  
                        data: result,  
                        columns: [  
                            { data: "StartFromTime" },  
                            { data: "EndToTime" },  
                             
                        ],  
  
                        "aoColumnDefs": [  
                              {  
                                  "aTargets": [0],  
                                  //title: "StartFromTime",  
                                  "mRender": function (row) {//data  
                                      //console.log("inside the date and time:"   data   ":"   type);  
                                      //console.log(moment(row.StartFromTime).format('DD/MM/YYYY hh:mm:ss'));  
                                      //console.log("StartFromTime:"  moment(row.StartFromTime).format('hh:mm:ss'));  
                                      //console.log("innnn");  
                                      //console.log(row);  
                                      ////console.log(data);  
                                      //console.log(type);  
                                      //console.log(moment(row).format('hh:mm:ss'));  
                                      //var date = new Date(parseInt(data.substr(6)));  
                                      //console.log("date:"   date);  
                                      //return date.getDate();  
                                      return moment(row.StartFromTime).format('hh:mm:ss');  
  
                                  }  
                              },  
                              {  
                                  "aTargets": [1],  
                                 
                                  "mRender": function (row) {//data  
                                      return moment(row.EndToTime).format('hh:mm:ss');  
  
                                  }  
                              },  
 

Модель

 public class TimeList  
{  
    public int Id { get; set; }  
    public DateTime StartFromTime { get; set; }  
    public DateTime EndToTime { get; set; }  
 

что я пытаюсь:

приведенный ниже код также не работает:

 "mRender": function(row){    
var aDate= new Date(row);  
var dateString = '';  
  
var h = aDate.getHours();  
var m = aDate.getMinutes();  
var s = aDate.getSeconds();  
  
if (h < 10) h = '0'   h;  
if (m < 10) m = '0'   m;  
if (s < 10) s = '0'   s;  
  
dateString = h   ':'   m   ':'   s;  
return dateString;  
    }   
 

приведенный ниже код также не работает:

 var aDate = new Date(row.EnquiryFromTime);
console.log("gettime:"   aDate);
return aDate.getTime();
 

как показать время базы данных в datatable?

проблема в том, что функция moment() встроена в функцию jquery, поэтому я хочу показать текущее время, чтобы показать время базы данных

Я постоянно пересматриваю это moment.js файл, но не получить ни малейшего представления

https://momentjs.com/

Я хочу показать время базы данных в datatable?

помогите, я пытаюсь и пытаюсь, но не работаю, какое место нужно исправить

Ответ №1:

Я думаю, что ваша проблема — часовой пояс. часовой пояс вашей базы данных может отличаться от часового пояса вашего браузера (ваш datatable работает в часовом поясе браузера).

сначала взгляните на ajax-запрос, откройте вкладку chrome console network, выберите xhr, а затем перезагрузите страницу. вы увидите, что ваш datatable запрашивает данные с помощью ajax, посмотрите ответ.

если даты ответа верны, просто укажите тип столбца datatable в виде строки (https://datatables.net/reference/option/columns.type ), так что вы увидите все как есть. это поможет вам на данный момент, но я предполагаю, что это приведет к неправильной сортировке.

правильный способ решения вашей проблемы — узнать вашу базу данных и часовой пояс вашего браузера (часовой пояс ОС), а затем настроить его с учетом смещения момента utc (https://momentjs.com/docs/#/manipulating/utc-offset /), чтобы добавить или вычесть минуты (т.е. utc 08:00, так что 8 * 60 минут = 480 в качестве параметра utcOffset)