2016-11-11 3 views
4

У меня есть приложение, использующее таблицы Bootstrap, а одно из полей - Time. Когда я получаю данные из базы данных, он закодирован в формате JSON, данные для этого поля примерно такие, как 2016-11-07T13: 40: 29.000Z, которые я понимаю, это стандартный формат JSON.JSON Формат даты - только отображение времени

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

Я читал, что это как-то связано с добавлением dataFormatter в заголовок столбца, но я не могу заставить его работать, так как мой javascript возвращает NaN.

Это код, который я нашел, исследуя проблему. Я новичок в Javascript, поэтому, вероятно, есть несколько ошибок, которые я бы очень хотел получить.

<table id="table" data-url ="http://maccdx161012:4567/api/v1/sat" data-toggle="table"> 
    <thead> 
     <tr> 

      <th data-field="initials">Initials</th> 
      <th data-field="sector">Sector</th> 
      <th data-field="cjs">CJS</th> 
      <th data-field="satin" data-formatter="timeFormatter">In</th> 
      <th data-field="satout">Out</th> 
      <th data-field="duration">Duration</th> 
      <th data-field="position">Position</th> 
      <th data-field="ot">OT</th>    
     </tr> 
    </thead> 
</table> 
<script> 
    function timeFormatter(value) { 
     var date = new Date(value*1000); 
     var hours = date.getHours(); 
     var minutes = "0" + date.getMinutes(); 

     return hours + ':' + minutes.substr(-2); 
    } 
</script> 
+2

'' 2016-11-07T13: 40: 29.000Z'.substring (11,16) ' – Keith

+0

Если вы видите исключение NaN, поле ввода« значение »не является датой, вы можете поместить консоль. log (value) в вашей функции, чтобы узнать, в чем проблема – Kalamarico

ответ

2
<script> 
    function timeFormatter(value) { 
     var date = new Date(value); 
     var hours = date.getHours(); 
     var minutes = leadZero(date.getMinutes()); 

     return hours + ':' + minutes; 
    } 
    function dateFormatter(value) { 
     var date = new Date(value); 
     var years = date.getFullYear(); 
     var months = leadZero(date.getMonth() + 1); 
     var days = leadZero(date.getDate()); 

     return years + '-' + months + '-' + days; 
    } 
    function leadZero(n) { return n>9 ? n : "0" + n; } 
</script> 

Она возвращает время для местного часового пояса. Если вы не хотите эту функцию, используйте решение Keith.

+0

Кажется, что это работает точно так, как я хотел, с одной проблемой. У меня есть один раз, который выглядит так: 16:39 или 15:32, что здорово. Но некоторые из них выглядят так: 16: 0 или 18: 0. Любая идея, почему это может произойти с некоторыми, но не со всеми? Когда я удаляю код и возвращаюсь в формат JSON, все они выглядят одинаково. Еще раз спасибо!! Это действительно помогло – user2843365

+0

Кажется, что это может быть связано со временем, когда минуты меньше 10. – user2843365

+0

Попробуйте новую версию – br3t

Смежные вопросы