Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как удалить объект из LocalStorage через 30 дней (https://javascript.ru/forum/dom-window/84831-kak-udalit-obekt-iz-localstorage-cherez-30-dnejj.html)

NeonMan 09.01.2023 20:50

Как удалить объект из LocalStorage через 30 дней
 
Подскажите пожалуйста, как удалить значение из LocalStorage через определенную дату, например через 30 дней?

Aetae 09.01.2023 21:14

С точностью - никак. А так - хранить в том же сторе дату добавления, и периодически чекать разницу, когда страница у юзера открыта.

NeonMan 09.01.2023 21:24

Я написал небольшое приложение todo. Мне необходимо сделать так, что бы каждая задача в приложении хранилась не более 30 дней. Я, создавая задачу в приложении todo, кладу ее в LocalStorage и при загрузке приложения беру список задач из LocalStorage. Верный ли это подход для offline? Вероятно получая из LocalStorage список задач, необходимо проверять дату создания (я использую в ID: Date.now()) и текущую дату, и есть ли между ними 30 дней? Немогли бы вы показать, как проверить количество дней между датой создания и текущей датой?

ksa 09.01.2023 21:48

Цитата:

Сообщение от NeonMan
Немогли бы вы показать, как проверить количество дней между датой создания и текущей датой?

Например так
const d1 = new Date('2023-01-01')
const d2 = new Date()

let val = (d2 - d1) / 1000 / 60 / 60 / 24
val = Math.trunc(val)
alert(val)

Rise 09.01.2023 21:50

NeonMan,
30 дней это 30 * 24 * 60 * 60 * 1000 миллисекунд. Их надо сравнить с разницей между текущей датой и датой создания.

NeonMan 10.01.2023 00:35

у меня id - это Date.now() (прим. 1673298808164), не покажите, как сравнить максимально простым способом, и узнать сколько дней разницы, ведь мне нужно проверять массив через .map сравнивая item.id с текущей датой при каждой итерации

voraa 10.01.2023 07:24

Что может быть проще
(Date.now() - item.id)/1000/60/60/24
?

Rise 10.01.2023 11:31

NeonMan,
const storage = {
    save(name, value = []) {
        localStorage.setItem(name, JSON.stringify(value));
    },
    restore(name) {
        return JSON.parse(localStorage.getItem(name)) || [];
    },
    clear(name, age) {
        this.save(name, this.restore(name).filter(item => Date.now() - item.id < age));
    }
};

storage.clear('todo', 30 * 24 * 60 * 60 * 1000);

let tasks = storage.restore('todo'); // [{ id: ..., ... }, { id: ..., ... }, ...]


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