@nemolayn
Создатель бота Nemo

Как перевести значение «1 день» в секунды? А еще как перевести значение «1 день» например в 19.05.2023 1:42?

Мне нужно перевести значение "1 день"/"1 час"/"1 минута" в секунды для таймера. А точнее функция, но я вообще не знаю как это сделать. И еще одну функцию для того что бы например таймер получил сегодня а пишется во сколько он закончится, точнее например в 19.05.2023 1:42
  • Вопрос задан
  • 109 просмотров
Решения вопроса 1
vabka
@vabka
Токсичный шарпист
Простейшая арифметика из третьего класса школы + немного гуглежа по поводу работы со временем в js.
function getTimerEndFromNow(prompt) {
 return getTimerEndFrom(new Date(), prompt);
}

function getTimerEndFrom(start, prompt) {
  return new Date(start.valueOf() + getSecondsByPrompt(prompt) * 1000);
}

function getSecondsByPrompt(prompt) {
  const [count, measure] = prompt.split(' ');
  return count * getSecondsByMeasure(measure);
}

function getSecondsByMeasure(measure) {
  switch(measure.toLowerCase()) {
    case 'день': return 60 * 60 * 24;
    case 'час': return 60 * 60;
    case 'минута': return 60;
    default: throw new Error(`Unknown measure ${measure}`);
  }
}


С ЭТИМ БЛИН ДАЖЕ БЕСПЛАТНЫЙ БОТ НА ОСНОВЕ GPT СПРАВЛЯЕТСЯ

Запрос:

/gpt
Мне нужно перевести значение "1 день"/"1 час"/"1 минута" в секунды для таймера. А точнее функция, но я вообще не знаю как это сделать. И еще одну функцию для того что бы например таймер получил сегодня а пишется во сколько он закончится, точнее например в 19.05.2023 1:42

Напиши функции на js

Ответ:

Для перевода "1 день"/"1 час"/"1 минута" в секунды можно использовать следующую функцию:

function convertToSeconds(time) {
  const timeArr = time.split(' ');
  const value = parseInt(timeArr[0]);
  const unit = timeArr[1];

  switch (unit) {
    case 'день':
      return value * 24 * 60 * 60;
    case 'час':
      return value * 60 * 60;
    case 'минута':
      return value * 60;
    default:
      return 0;
  }
}


Пример использования:

const secondsInDay = convertToSeconds('1 день'); // 86400
const secondsInHour = convertToSeconds('1 час'); // 3600
const secondsInMinute = convertToSeconds('1 минута'); // 60


Для форматирования даты в строку можно использовать объект `Date` и методы `getFullYear()`, `getMonth()`, `getDate()`, `getHours()`, `getMinutes()`, `getSeconds()`:

function formatDate(date) {
  const year = date.getFullYear();
  const month = addLeadingZero(date.getMonth() + 1);
  const day = addLeadingZero(date.getDate());
  const hours = addLeadingZero(date.getHours());
  const minutes = addLeadingZero(date.getMinutes());
  const seconds = addLeadingZero(date.getSeconds());

  return `${day}.${month}.${year} ${hours}:${minutes}:${seconds}`;
}

function addLeadingZero(value) {
  return value < 10 ? '0' + value : value;
}


Пример использования:

const endDate = new Date(2023, 4, 19, 1, 42, 0);
const formattedDate = formatDate(endDate); // '19.05.2023 01:42:00'


Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы