倒计时
设置倒计时时间
00
时
:
05
分
:
00
秒
秒表
精确计时工具
00:00:00
.000
计次记录
闹钟
设置提醒时间
12:00:00
闹钟列表
番茄工作法
25分钟专注,5分钟休息
准备开始
25:00
完成番茄:
0
今日总时长:
0分钟
代码示例
以下是在不同编程语言中实现计时器的代码示例:
JavaScript 计时器实现
// 倒计时类
class CountdownTimer {
constructor(callback) {
this.callback = callback;
this.remainingTime = 0;
this.intervalId = null;
this.isRunning = false;
}
start(hours, minutes, seconds) {
this.remainingTime = hours * 3600 + minutes * 60 + seconds;
this.isRunning = true;
this.intervalId = setInterval(() => {
if (this.remainingTime <= 0) {
this.stop();
this.callback();
return;
}
this.remainingTime--;
this.updateDisplay();
}, 1000);
}
pause() {
if (this.intervalId) {
clearInterval(this.intervalId);
this.intervalId = null;
this.isRunning = false;
}
}
resume() {
if (!this.isRunning && this.remainingTime > 0) {
this.isRunning = true;
this.intervalId = setInterval(() => {
if (this.remainingTime <= 0) {
this.stop();
this.callback();
return;
}
this.remainingTime--;
this.updateDisplay();
}, 1000);
}
}
stop() {
this.pause();
this.remainingTime = 0;
this.updateDisplay();
}
updateDisplay() {
const hours = Math.floor(this.remainingTime / 3600);
const minutes = Math.floor((this.remainingTime % 3600) / 60);
const seconds = this.remainingTime % 60;
console.log(`${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`);
}
}
// 秒表类
class Stopwatch {
constructor() {
this.startTime = 0;
this.elapsedTime = 0;
this.intervalId = null;
this.isRunning = false;
}
start() {
if (!this.isRunning) {
this.startTime = Date.now() - this.elapsedTime;
this.isRunning = true;
this.intervalId = setInterval(() => {
this.elapsedTime = Date.now() - this.startTime;
this.updateDisplay();
}, 10);
}
}
stop() {
if (this.intervalId) {
clearInterval(this.intervalId);
this.intervalId = null;
this.isRunning = false;
}
}
reset() {
this.stop();
this.elapsedTime = 0;
this.updateDisplay();
}
lap() {
return this.elapsedTime;
}
updateDisplay() {
const hours = Math.floor(this.elapsedTime / 3600000);
const minutes = Math.floor((this.elapsedTime % 3600000) / 60000);
const seconds = Math.floor((this.elapsedTime % 60000) / 1000);
const milliseconds = this.elapsedTime % 1000;
console.log(`${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}.${milliseconds.toString().padStart(3, '0')}`);
}
}
Python 计时器实现
import time
import threading
class CountdownTimer:
def __init__(self, callback):
self.callback = callback
self.remaining_time = 0
self.running = False
self.thread = None
def start(self, hours=0, minutes=0, seconds=0):
self.remaining_time = hours * 3600 + minutes * 60 + seconds
self.running = True
self.thread = threading.Thread(target=self._run)
self.thread.start()
def _run(self):
while self.remaining_time > 0 and self.running:
self._update_display()
time.sleep(1)
self.remaining_time -= 1
if self.remaining_time == 0:
self.callback()
def stop(self):
self.running = False
if self.thread:
self.thread.join()
def _update_display(self):
hours = self.remaining_time // 3600
minutes = (self.remaining_time % 3600) // 60
seconds = self.remaining_time % 60
print(f"{hours:02d}:{minutes:02d}:{seconds:02d}")
class Stopwatch:
def __init__(self):
self.start_time = 0
self.elapsed_time = 0
self.running = False
def start(self):
if not self.running:
self.start_time = time.time() - self.elapsed_time
self.running = True
def stop(self):
if self.running:
self.elapsed_time = time.time() - self.start_time
self.running = False
def reset(self):
self.stop()
self.elapsed_time = 0
def lap(self):
if self.running:
return time.time() - self.start_time
return self.elapsed_time
def get_elapsed(self):
if self.running:
return time.time() - self.start_time
return self.elapsed_time
番茄工作法实现(Python)
import time
import threading
import winsound # Windows
# import os # Linux/Mac
class PomodoroTimer:
def __init__(self, work_duration=25, break_duration=5):
self.work_duration = work_duration * 60
self.break_duration = break_duration * 60
self.is_work = True
self.running = False
self.thread = None
self.completed_pomodoros = 0
def start(self):
self.running = True
self.thread = threading.Thread(target=self._run)
self.thread.start()
def _run(self):
while self.running:
duration = self.work_duration if self.is_work else self.break_duration
mode = "工作" if self.is_work else "休息"
for i in range(duration, 0, -1):
if not self.running:
return
minutes = i // 60
seconds = i % 60
print(f"{mode}时间: {minutes:02d}:{seconds:02d}")
time.sleep(1)
if self.is_work:
self.completed_pomodoros += 1
self._notify("工作完成,休息时间!")
else:
self._notify("休息结束,开始工作!")
self.is_work = not self.is_work
def stop(self):
self.running = False
if self.thread:
self.thread.join()
def _notify(self, message):
print(message)
# Windows beep
winsound.Beep(1000, 1000)
# Linux/Mac 使用: os.system('say "{}"'.format(message))
关于计时器工具
倒计时的应用场景
- 烹饪计时:精确掌握烹饪时间
- 考试计时:考试或练习的时间管理
- 运动训练:间歇训练、休息时间控制
- 演讲计时:控制演讲或演示的时长
- 游戏计时:回合制游戏的时间限制
秒表的应用场景
- 体育竞技:比赛计时、成绩记录
- 实验记录:科学实验的时间测量
- 性能测试:代码执行时间、响应时间测试
- 学习计时:计时阅读、背诵等学习活动
番茄工作法
番茄工作法(Pomodoro Technique)是一种时间管理方法,由Francesco Cirillo于1980年代创立。其核心思想是将工作时间划分为25分钟的专注时段(称为"番茄"),每个番茄后休息5分钟。完成4个番茄后,进行一次较长的休息(15-30分钟)。
- 选择一个待完成的任务 >将番茄钟设定为25分钟
- 专注工作,直到番茄钟响起
- 短暂休息5分钟
- 每4个番茄钟后,休息15-30分钟