Как удалить объект из LocalStorage через 30 дней
Подскажите пожалуйста, как удалить значение из LocalStorage через определенную дату, например через 30 дней?
|
С точностью - никак. А так - хранить в том же сторе дату добавления, и периодически чекать разницу, когда страница у юзера открыта.
|
Я написал небольшое приложение todo. Мне необходимо сделать так, что бы каждая задача в приложении хранилась не более 30 дней. Я, создавая задачу в приложении todo, кладу ее в LocalStorage и при загрузке приложения беру список задач из LocalStorage. Верный ли это подход для offline? Вероятно получая из LocalStorage список задач, необходимо проверять дату создания (я использую в ID: Date.now()) и текущую дату, и есть ли между ними 30 дней? Немогли бы вы показать, как проверить количество дней между датой создания и текущей датой?
|
Цитата:
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) |
NeonMan,
30 дней это 30 * 24 * 60 * 60 * 1000 миллисекунд. Их надо сравнить с разницей между текущей датой и датой создания. |
у меня id - это Date.now() (прим. 1673298808164), не покажите, как сравнить максимально простым способом, и узнать сколько дней разницы, ведь мне нужно проверять массив через .map сравнивая item.id с текущей датой при каждой итерации
|
Что может быть проще
(Date.now() - item.id)/1000/60/60/24 ? |
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. |