Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.01.2023, 20:50
Аватар для NeonMan
Кандидат Javascript-наук
Отправить личное сообщение для NeonMan Посмотреть профиль Найти все сообщения от NeonMan
 
Регистрация: 22.07.2018
Сообщений: 123

Как удалить объект из LocalStorage через 30 дней
Подскажите пожалуйста, как удалить значение из LocalStorage через определенную дату, например через 30 дней?
Ответить с цитированием
  #2 (permalink)  
Старый 09.01.2023, 21:14
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

С точностью - никак. А так - хранить в том же сторе дату добавления, и периодически чекать разницу, когда страница у юзера открыта.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 09.01.2023, 21:24
Аватар для NeonMan
Кандидат Javascript-наук
Отправить личное сообщение для NeonMan Посмотреть профиль Найти все сообщения от NeonMan
 
Регистрация: 22.07.2018
Сообщений: 123

Я написал небольшое приложение todo. Мне необходимо сделать так, что бы каждая задача в приложении хранилась не более 30 дней. Я, создавая задачу в приложении todo, кладу ее в LocalStorage и при загрузке приложения беру список задач из LocalStorage. Верный ли это подход для offline? Вероятно получая из LocalStorage список задач, необходимо проверять дату создания (я использую в ID: Date.now()) и текущую дату, и есть ли между ними 30 дней? Немогли бы вы показать, как проверить количество дней между датой создания и текущей датой?
Ответить с цитированием
  #4 (permalink)  
Старый 09.01.2023, 21:48
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от 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)
Ответить с цитированием
  #5 (permalink)  
Старый 09.01.2023, 21:50
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

NeonMan,
30 дней это 30 * 24 * 60 * 60 * 1000 миллисекунд. Их надо сравнить с разницей между текущей датой и датой создания.
Ответить с цитированием
  #6 (permalink)  
Старый 10.01.2023, 00:35
Аватар для NeonMan
Кандидат Javascript-наук
Отправить личное сообщение для NeonMan Посмотреть профиль Найти все сообщения от NeonMan
 
Регистрация: 22.07.2018
Сообщений: 123

у меня id - это Date.now() (прим. 1673298808164), не покажите, как сравнить максимально простым способом, и узнать сколько дней разницы, ведь мне нужно проверять массив через .map сравнивая item.id с текущей датой при каждой итерации
Ответить с цитированием
  #7 (permalink)  
Старый 10.01.2023, 07:24
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,701

Что может быть проще
(Date.now() - item.id)/1000/60/60/24
?
Ответить с цитированием
  #8 (permalink)  
Старый 10.01.2023, 11:31
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

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: ..., ... }, ...]

Последний раз редактировалось Rise, 10.01.2023 в 11:39.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как загружать изображения через .readAsArrayBuffer NiOl Элементы интерфейса 2 18.06.2019 23:17
Как перемещать объект в 3Д пространстве? SVARAI Общие вопросы Javascript 4 11.07.2014 11:08
jQuery (Как открыть объект в этом же окне, щёлкнув по нему мышкой) Объект кусок карты hadzhimuratov (X)HTML/CSS 32 18.06.2012 17:54
как удалить элемент в DOM? czp Общие вопросы Javascript 11 17.12.2011 20:55
Освобождение памяти или как удалить this? Greck Общие вопросы Javascript 16 14.12.2011 11:29