Как выводить с файла записи за последний час?

218
02 июля 2017, 16:19

В json файле хранятся сообщения пользователей чата. Нужно выводить на экран все сообщения за последний час.

Вот в эту таблицу сообщения выводятся.

<table id="messages">
    <tr class="mess_hide">
        <td class="time"></td>
        <td class="name"></td>
        <td class="message"></td>
    </tr>
</table>

Так выглядит вывод только что введенных сообщений

function(arr) {
    arr = $.parseJSON(arr)
$('#messages').append($('.mess_hide').clone().addClass('mess_tmp').removeClass
('mess_hide')); 
    $('.mess_tmp>.time').html(arr.time);
    $('.mess_tmp>.name').html(arr.user);
    $('.mess_tmp>.message').html(arr.message);
    $('.mess_tmp').removeClass('mess_tmp');
}

Хранятся сообщения в таком виде:

{ 
    "time": "13:47:49",
    "user": "qwe",
    "message": "qwe"
}

Запись в файл

$user = $_SESSION['user'];
$message = $_POST['message'];
$time = date('H:i:s');
$file = "../data/messages.json";
$json_content = json_decode(file_get_contents($file), true);
$content = array();
if(is_array($json_content)) {
    $content = $json_content;
}
$content = array("time" => $time, "user" => $user, "message"  => $message);
file_put_contents($file, json_encode($content, JSON_PRETTY_PRINT),FILE_APPEND);

Подскажите пожалуйста, как правильно с помощью "time" определять и выводить нужные сообщения?

Answer 1

Можно попробовать сделать вот такой фильтр:

let arr = [{
"time": "17:00:49",
  "user": "qwe",
  "message": "qwe"},
{
"time": "17:00:49",
  "user": "qwe1",
  "message": "qwe1"},
  {
    "time": "18:00:49",
  "user": "qwe2",
  "message": "qwe2"},
  {
    "time": "18:00:49",
  "user": "qwe3",
  "message": "qwe3"},
  {
    "time": "18:00:49",
  "user": "qwe4",
  "message": "qwe5"}
 ]
 let current_date = new Date().toDateString();
 arr = arr.filter((el, index, array)=>{
     if ((new Date() - new Date(current_date + ' ' +el.time)) < 3600*1000)
        return true;
      else 
      return false;
  });
  console.log(arr.length);

https://jsfiddle.net/opr70cp2/1/

READ ALSO
Как узнать, где и как вычисляются значения переменной [требует правки]

Как узнать, где и как вычисляются значения переменной [требует правки]

Тело сообщения должно содержать не менее 30 символов

189
Не работaет запрос AJAX и JSON

Не работaет запрос AJAX и JSON

Когда я убираю dataType: 'json', то success: работает, а иначе нетТак как $("#log-form")

432
Работа с PHP JSON MYSQL

Работа с PHP JSON MYSQL

Есть таблица

222
Как на PHP сделать замену текста?

Как на PHP сделать замену текста?

Как на PHP сделать замену текста **bold** на <b>bold</b>, __underline__ на <u>underline</u> и --str-- на <strike>str</strike>

257