在线计时器工具

专业的在线计时器,支持倒计时、秒表、闹钟等多种时间管理功能

倒计时

设置倒计时时间

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分钟