Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как правильно сравнивать временные метки? (https://javascript.ru/forum/dom-window/76703-kak-pravilno-sravnivat-vremennye-metki.html)

gsdev99 05.02.2019 07:59

Как правильно сравнивать временные метки?
 
Здравствуйте. Подскажите, пожалуйста как правильно реализовать следующую логику: при первом посещении сайта, я записываю получаю данные сервера (json), записываю эти данные в localstorage. Далее при перезагрузке страницы, я получаю эти данные с localstorage, например:
[
  {id: 5, name: 'Mikhail', value: '18.35'},
  {id: 3, name: 'Yuri', value: '13.25'},
  {id: 1, name: 'Alexey', value: '07.25'},
  {id: 2, name: 'Ruslan', value: '09.55'},
  {id: 4, name: 'Ruslan', value: '13.55'}
]

И мне нужно проверить, делал ли я запрос на сервер последний раз, например 30 минут назад, и если да, то сделать его снова (true), нет: false.
Т.е. как мне правильно записать время запроса и при перезагрузке страницы сравнить текщее время с предыдущим временем запроса?

ksa 07.02.2019 14:14

Цитата:

Сообщение от gsdev99
как мне правильно записать время запроса

Получи дату и время в виде стандартной строки
Цитата:

Сообщение от gsdev99
при перезагрузке страницы сравнить текщее время с предыдущим временем запроса?

Узнай текущую дату и время время...
Прочитай записанную строку с датой и временем... Если она есть - преобразуй ее в дату и время...
Просто сравни данные одного типа...

Rise 08.02.2019 04:02

gsdev99,
function initData(key, url, onComplete, time) {
    var value = localStorage[key];
    if (value) {
        value = JSON.parse(value);
        if (new Date - value.time > time) {
            update();
        } else {
            onComplete(value.data);
        }
    } else {
        update();
    }
    function update() {
        $.getJSON(url, function (data) {
            value = { time: +new Date, data: data };
            localStorage[key] = JSON.stringify(value);
        }).always(function () {
            onComplete(value && value.data);
        });
    }
}

initData('myData', 'example.json', function (data) {
    if (!data) return;
    // data.id
    // data.name
    // data.value
}, 30 * 60 * 1000);

gsdev99 10.02.2019 12:20

Спасибо.


Часовой пояс GMT +3, время: 14:56.