Калькулятор времени предназначен для выполнения различных временных расчетов и несет в себе несколько функций:
- указание текущего времени пользователя,
- расчет временного интервала между двумя заданными точками,
- перевод времени из одних единиц в другие (секунды, минуты, часы, дни, ЧЧ:ММ:СС).
Калькулятор времени поможет вам определить остаток времени к заданному моменту. Например, задав время окончания рабочего дня, вы можете точно узнать, сколько вам сегодня еще работать. Или, к примеру, сколько времени осталось на сон. Для этого достаточно ввести время, на которое вы установили свой будильник и текущее время.
Но, кроме шуточных способов использования калькулятора времени, его можно применять и действительно для дела. Должностные лица, отвечающие за расчет отработанного сотрудниками организации времени, для определения переработки, также могут прибегнут к калькулятору времени. Для этого достаточно ввести время прихода и выхода сотрудника с работы по данным системы электронных пропусков, а калькулятор сам уже посчитает количество отработанных часов.
Кроме этого, калькулятор времени может быть полезен для определения времени записи на видеоносителе. Если на видеоноситель сделано несколько записей, то задав время начала и конца записи, вы сможете определить ее продолжительность.
Кроме указанных способов использования функции расчета временного интервала, можно привести еще много примеров, но с уверенностью можно сказать, что каждый желающий сможет найти ему применение как для личных, может быть развлекательных целей, так и для серьезных рабочих вопросов.
Калькулятор времени
Часы : Минуты : Секунды
Время №1 | : | : | |
Время №2 | : | : | |
Посчитать |
Функция калькулятора времени по переводу из одних единиц времени в другие, позволяет с легкостью перевести дни в часы, минуты и даже секунды, в формат часы-минуты-секунды, а также в обратную сторону.
К примеру, вы собираетесь в кинотеатр, чтобы посмотреть что-то из последних новинок, и зайдя на сайт с описанием фильмов, узнаете, что продолжительность фильма составляет 164 минуты, что, согласитесь, не очень понятно. Но, при помощи калькулятора времени, вы с легкостью можете определить, что продолжительность фильма 2 часа 44 минуты, что уже гораздо понятнее для планирования своего времени.
По аналогии с приведенными примерами, калькулятор времени можно использовать для множества расчетов и перевода значения времени из одних единиц в другие.
Перевод времени
#javascript #time #timestamp
Вопрос:
Допустим, мое мероприятие началось в
publishDateTime: "2021-08-23T16:45:53.378"
и это закончится через несколько дней,
duration: 3
Как узнать общее оставшееся время?
function timer(endTime = "2021-08-27T16:45:53.378") {
const second = 1000,
minute = second * 60,
hour = minute * 60,
day = hour * 24;
let end = new Date(endTime).getTime(),
x = setInterval(function () {
let now = new Date().getTime(),
timeLeft = end - now;
let days = Math.floor(timeLeft / (day)),
hours = Math.floor((timeLeft % (day)) / (hour)),
minutes = Math.floor((timeLeft % (hour)) / (minute)),
seconds = Math.floor((timeLeft % (minute)) / second);
console.log('Time left:' days "Days " hours "Hrs " minutes "Mins " seconds "secs")
if (timeLeft < 0) {
console.log('Times up');
clearInterval(x);
}
}, 1000) // time refresh in ms
}
timer("2021-08-23T16:45:53.378")
Я пытаюсь так, но здесь я не знаю, как преобразовать продолжительность дней в метку времени или в такой формат. Но когда я пытаюсь завершить работу с этим форматом, он работает. Но у меня есть счет дням.
Ответ №1:
Вам нужно добавить количество дней к вашему endDate
Что-то вроде этого:
function timer(endTime, durationDay = 3) {
const second = 1000,
minute = second * 60,
hour = minute * 60,
day = hour * 24;
let endDate = new Date(endTime);
endDate.setDate(endDate.getDate() durationDay);
let end = endDate.getTime();
let x = setInterval(function () {
let now = new Date().getTime(),
timeLeft = end - now;
let days = Math.floor(timeLeft / (day)),
hours = Math.floor((timeLeft % (day)) / (hour)),
minutes = Math.floor((timeLeft % (hour)) / (minute)),
seconds = Math.floor((timeLeft % (minute)) / second);
console.log('Time left:' days "Days " hours "Hrs " minutes "Mins " seconds "secs")
if (timeLeft < 0) {
console.log('Times up');
clearInterval(x);
}
}, 1000) // time refresh in ms
}
timer("2021-08-23T16:45:53.378")
https://jsfiddle.net/ah57nypq/
Ответ №2:
Расчет оставшегося времени:
const publishDateTime = "2021-08-23T16:45:53.378";
const duration = 3; // days
const durationMs = duration * 24 * 3600 * 1000;
const startDateTime = new Date(publishDateTime);
const endDateTime = new Date(startDateTime.valueOf() durationMs);
const now = new Date();
const remainingTimeMs = Math.max(0, Math.min(endDateTime.valueOf() - now.valueOf(), durationMs));
console.log(`Remaining time: ${remainingTimeMs} ms`);
Ответ №3:
Способ, которым вы получаете время через 3 дня, заключается в том, чтобы получить текущее время new date()
и добавить к нему 3 дня (рассчитано исходя из количества часов, минут и т.д.). Я изменил ваш код, чтобы он работал так.
function timer(endDays = 1) {
const second = 1000,
minute = second * 60,
hour = minute * 60,
day = hour * 24;
let end = new Date().getTime() endDays * day,
x = setInterval(function () {
let now = new Date().getTime(),
timeLeft = end - now;
let days = Math.floor(timeLeft / (day)),
hours = Math.floor((timeLeft % (day)) / (hour)),
minutes = Math.floor((timeLeft % (hour)) / (minute)),
seconds = Math.floor((timeLeft % (minute)) / second);
console.log('Time left:' days "Days " hours "Hrs " minutes "Mins " seconds "secs")
if (timeLeft < 0) {
console.log('Times up');
clearInterval(x);
}
}, 1000) // time refresh in ms
}
timer(3)
Комментарии:
1. Ваш ответ тоже хорош, но для чего-то, что начинается сегодня и заканчивается
endDays
после сегодняшнего дня. Но как насчет ошибки обновления страницы или навигатора? Таймеры будут сброшены.2. Да, ты прав. Я неправильно понял ваш вопрос. Единственным изменением было бы добавить параметр publishDateTime в функцию таймера и использовать его вместо новой даты().
Конвертация даты и времени
Математические операции с датой и временем
Информация и интерактивные памятки
Обратный отсчет до наступления времени года
Обратный отсчет до завершения времени года
Обратный отсчет до начала определенного месяца
Обратный отсчет до определенного праздника
Я пишу Javascript, который взаимодействует с библиотечным кодом, который у меня нет, и не может (разумно) меняться. Он создает тайм-ауты Javascript, используемые для отображения следующего вопроса в серии ограниченных по времени вопросов. Это не настоящий код, потому что он запутан без всякой надежды. Вот что делает библиотека:
....
// setup a timeout to go to the next question based on user-supplied time
var t = questionTime * 1000
test.currentTimeout = setTimeout( showNextQuestion(questions[i+1]), t );
Я хочу поставить индикатор выполнения на экране, который заполняется в направлении questionTime * 1000
путем опроса таймера, созданного с помощью setTimeout
. Единственная проблема в том, что, похоже, нет никакого способа сделать это. Есть ли функция getTimeout
, которую я пропускаю? Единственная информация о тайм-аутах Javascript, которые я могу найти, связана только с созданием через setTimeout( function, time)
и удалением через clearTimeout( id )
.
Я ищу функцию, которая возвращает либо время, оставшееся до срабатывания тайм-аута, либо время, прошедшее после вызова таймаута. Мой код выполнения выглядит следующим образом:
var timeleft = getTimeout( test.currentTimeout ); // I don't know how to do this
var $bar = $('.control .bar');
while ( timeleft > 1 ) {
$bar.width(timeleft / test.defaultQuestionTime * 1000);
}
tl; dr: Как найти время, оставшееся до javascript setTimeout()?
Здесь решение, которое я использую сейчас. Я прошел через раздел библиотеки, который отвечал за тесты, и расшифровал код (ужасный и против моих прав).
// setup a timeout to go to the next question based on user-supplied time
var t = questionTime * 1000
test.currentTimeout = mySetTimeout( showNextQuestion(questions[i+1]), t );
и здесь мой код:
// wrapper for setTimeout function mySetTimeout( func, timeout ) { timeouts[ n = setTimeout( func, timeout ) ] = { start: new Date().getTime(), end: new Date().getTime() + timeout t: timeout } return n; }
Это работает довольно хорошо в любом браузере, который не является IE 6. Даже оригинальный iPhone, где я ожидал, что вещи станут асинхронными.
Сколько дней до конца года
Воскресенье,
31
декабря
2023 года,
23:59
225 дней,
22 часа,
00 минут,
28 секунд
Ссылка на результат: