Как сохранить текущую дату и предотвратить ее изменение при перезагрузке - PullRequest
0 голосов
/ 04 апреля 2020

Я новичок в javascript. Я работал с php раньше. У меня есть функция создания, которая возвращает текущую дату месяца, время. Я хочу сохранить это сгенерированное время и предотвратить его увеличение на refre sh. но я не могу понять, как это сделать? Может кто-нибудь, пожалуйста, направьте меня с этим?

function getDateForTimer() {
    var date = new Date();
    var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];
    var month = months[date.getMonth()];
    var year = date.getFullYear();
    var todayDate = date.getDate();
    var hours = date.getHours();
    var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();;
    var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();

    return month + ' ' + todayDate + ', ' + year + ' ' + hours + ':' + (minutes + 15) + ':' + seconds;
}

// returns => Apr 4, 2020 19:35:37

Ответы [ 3 ]

0 голосов
/ 04 апреля 2020

Вот решение с использованием localStorage.

function getPersistentDate() {
    var lastValue = localStorage.getItem('lastTime');
    // If no previous value, or previous value is
    // more than 20 minutes old, set a new one.
    if(!lastValue || Date.now() - lastValue > 20 * 60000) {
        localStorage.setItem('lastTime', Date.now());
        return new Date();
    } else {
        return new Date(lastValue);
    }
}

function getDateForTimer() {
    var date = getPersistentDate();
    var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'];
    var month = months[date.getMonth()];
    var year = date.getFullYear();
    var todayDate = date.getDate();
    var hours = date.getHours();
    var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();;
    var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();

    return month + ' ' + todayDate + ', ' + year + ' ' + hours + ':' + (minutes + 15) + ':' + seconds;
}
0 голосов
/ 04 апреля 2020

Чтобы сохранить данные в браузере, вы можете использовать localStorage или sessionStorage. Оба имеют свои варианты использования.

LocalStorage будет оставаться до тех пор, пока вы не очистите данные или не удалите programmatically, sessionStorage, автоматически удаленные после завершения сеанса.

примечание: если вы хотите сохранить сеанс из бэкэнда, используйте session cookies и установите небезопасный путь. Так что хакеры не могут это изменить. Read-only.

function getDateForTimer() {
  var date = new Date();
  var months = [
    "Jan",
    "Feb",
    "Mar",
    "Apr",
    "May",
    "Jun",
    "Jul",
    "Aug",
    "Sept",
    "Oct",
    "Nov",
    "Dec",
  ];
  var month = months[date.getMonth()];
  var year = date.getFullYear();
  var todayDate = date.getDate();
  var hours = date.getHours();
  var minutes =
    date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
  var seconds =
    date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();

  return (
    month +
    " " +
    todayDate +
    ", " +
    year +
    " " +
    hours +
    ":" +
    (minutes + 15) +
    ":" +
    seconds
  );
}

const time = getDateForTimer();

// Save last date

localStorage.setItem("lastDate", time);

window.onload = function () {
  // some logic to create and delete time.
  const lastDate = localStorage.getItem("lastDate");
  if (!lastDate) lastDate = getDateForTimer();

  // how to delete
  localStorage.removeItem("lastDate")
};
0 голосов
/ 04 апреля 2020

Если вы имеете в виду обновление страницы в браузере, то вам понадобится переменная сеанса PHP (или cook ie et c), установленная в конце вашего скрипта /// В верхней части скрипта проверьте наличие наличие сеанса / повара ie. Не запускайте JS, если присутствует значение

Если вы хотите потерять сохраненное значение, то либо установите дату истечения срока действия cook ie, либо установите другое значение временной метки в качестве переменной сеанса (или cook ie )

Как в комментариях ... Вы можете использовать локальный текстовый файл или базу данных вместо cookie / session

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...