Простейшая арифметика из третьего класса школы + немного гуглежа по поводу работы со временем в 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'