You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过插入分:秒:毫秒格式时间计算时长?游戏模式计时优化

游戏计时:从模式启动到抵达的分:秒:毫秒耗时计算方案

嘿,这个需求太常见了!我之前做竞速类游戏模式的时候也折腾过类似的计时逻辑,给你分享一套靠谱的实现思路:

核心逻辑:用高精度时间戳算差值,再格式化

别用字符串格式的时间来做减法,直接拿两个时间点的高精度时间戳计算差值,再把差值转换成你要的分:秒:毫秒格式,这是最准确也最省心的方式。

步骤拆解

  1. 记录两个关键时间点
    模式启动时,记下当前的高精度时间戳(要精确到毫秒甚至微秒);玩家抵达目的地时,再记一次。
    不同语言的实现略有不同,但核心都是找能输出小数秒/毫秒级的函数:

    • PHP用microtime(true)(返回带小数的秒数,比如1698765432.123456)
    • JavaScript用performance.now()(返回从页面加载开始的毫秒数,精度更高)
    • Python用time.time()(返回带小数的秒数)
  2. 计算时间差
    用抵达时的时间戳减去启动时的时间戳,得到的就是总耗时(单位:秒/毫秒,看你用的函数)。

  3. 格式化成i:s:u(分:秒:毫秒)
    把总耗时拆解成分钟、秒、毫秒三个部分,然后补零格式化,保证格式统一(比如1分钟5秒78毫秒要显示成01:05:078)。

代码示例(PHP版)

// 模式启动时记录起始时间戳
$startTimestamp = microtime(true);

// 玩家抵达时记录结束时间戳
$endTimestamp = microtime(true);

// 计算总耗时(单位:秒,带小数)
$totalSeconds = $endTimestamp - $startTimestamp;

// 拆解成分钟、秒、毫秒
$minutes = floor($totalSeconds / 60);
$seconds = floor($totalSeconds % 60);
$milliseconds = floor(($totalSeconds - floor($totalSeconds)) * 1000);

// 格式化输出:补零到两位(分钟、秒),三位(毫秒)
$formattedTime = sprintf("%02d:%02d:%03d", $minutes, $seconds, $milliseconds);

// 示例输出:02:05:789
echo $formattedTime;

代码示例(JavaScript版)

// 模式启动时记录起始毫秒数
const startMs = performance.now();

// 玩家抵达时记录结束毫秒数
const endMs = performance.now();

// 计算总耗时(单位:毫秒)
const totalMs = endMs - startMs;

// 拆解成分钟、秒、毫秒
const minutes = Math.floor(totalMs / 60000);
const seconds = Math.floor((totalMs % 60000) / 1000);
const milliseconds = Math.floor(totalMs % 1000);

// 格式化输出:补零处理
const formattedTime = `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}:${String(milliseconds).padStart(3, '0')}`;

// 示例输出:02:05:789
console.log(formattedTime);

注意事项

  • 优先用高精度时间函数:别用只精确到秒的时间戳(比如PHP的time()),不然毫秒部分就没了。
  • 存储原始值,按需格式化:如果要把耗时存到数据库,建议存原始的时间差(比如毫秒数或带小数的秒数),不要存格式化后的字符串——后续要改格式、做排序统计都方便。
  • 补零很重要:用sprintf或者padStart补零,保证所有时长的格式统一,看起来更专业。

内容的提问来源于stack exchange,提问作者LewBr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:15:26