Skip to content

/time 时间控制

查询或设置游戏内时间,支持时间增减、预设时刻与昼夜循环控制

命令
官方•Dingding OvO · 2026-08-12

/time 用于查询或设置游戏内的时间,可以切换昼夜阶段、推进或回拨时间,以及读取当前时间数值。基岩版 1.17.30 起,/time set <数量> 改为直接设定昼夜循环时间,而不再累加推进到目标时刻。

原理

Minecraft 的「时间」并不是一个简单的时刻,而是由多个相互独立、各司其职的计数器共同构成,它们作为世界的持久化状态保存在存档的 level.dat 中。理解这些计数器是掌握 /time 的关键:

  • 世界游戏时间(gametime):自世界创建以来累计经过的游戏刻总数,内部以 64 位整数存储,只会随世界运行单调增长,用作各种「绝对时间」系统的参照。
  • 昼夜循环时间:驱动太阳、月亮与天空颜色变化的连续时间值,每 24000 刻(即 20 分钟真实时间)完成一轮昼夜循环。
  • 当天时间(daytime):昼夜循环时间对 24000 取模后的结果,范围 0 到 23999,决定「现在是一天中的哪一刻」。
  • 天数(day):昼夜循环时间整除 24000 得到的整数值,表示已经完整经过的天数。

/time set 与 /time add 改写的是昼夜循环时间这一计数器。执行后太阳与月亮的位置、天空颜色以及环境光照会立即变化,依赖昼夜判断的系统(如敌对生物的生成、村民入睡、亡灵生物在阳光下燃烧等)也会同步响应。gametime 与这些命令相互独立,/time set 和 /time add 都不会回拨或篡改世界的总运行刻数,它只随世界正常运转而增长。/time query 则只读取不修改,把查询到的数值返回给执行者。

昼夜循环时间与 doDaylightCycle 游戏规则紧密耦合。当该规则设为 false 时,昼夜循环时间停止增长,太阳与月亮被「冻结」在当前位置,天空不再随时间流转,但 gametime 依然继续累积,这正是「锁定白天」等玩法的实现基础。基岩版还有一处与 Java 版不同的行为:使用预设时刻(如 day、noon)时,基岩版会把昼夜循环时间向前推进到下一个该时刻,而不是直接改写。例如当前已处于第 1 天的 1000 刻之后,再执行 /time set day 会推进到第 2 天的 1000 刻,天数只增不减;只有直接指定数字(如 /time set 1000)才会原地改写到对应数值。这一「向前推进」的行为在 1.17.30 之前同样作用于数字参数,之后数字参数才改为直接设定。

子命令一览

子命令作用
add在当前昼夜循环时间上累加指定刻数
set设定昼夜循环时间(直接写数值,或推进到预设时刻)
query查询当前时间数值(当天时间、世界游戏时间或天数)

语法

/time add <数量>

/time set <数量>

/time set <预设时刻>

/time query <查询类型>

参数

  • <数量> — 整数,表示要设定或增减的游戏刻数。用在 /time set 时直接把昼夜循环时间改写为该数值;用在 /time add 时在当前值上累加。一天为 24000 刻,可以填写大于 24000 的数值来表示跨越多个昼夜。
  • <预设时刻> — 枚举,用在 /time set 时把时间推进到指定的昼夜阶段。可选值:day、noon、sunset、night、midnight、sunrise,具体对应数值见「预设时刻」章节。
  • <查询类型> — 枚举,用在 /time query 时指定要查询的时间类型。可选值:daytime(当天时间)、gametime(世界总游戏刻数)、day(已过的天数)。

预设时刻

预设时刻对应刻数对应阶段
day1000白天(日出后不久)
noon6000正午
sunset12000日落(进入夜晚)
night13000夜晚(日落后不久)
midnight18000午夜
sunrise23000黎明前(即将日出)

一轮昼夜以 0 刻为日出(一天的开始),6000 刻为正午,12000 刻为日落,18000 刻为午夜,24000 刻重新回到 0 刻开启新的一天。其中 sunrise 与 sunset 是基岩版独有的预设时刻,Java 版只提供 day、noon、night、midnight 四个。

示例

将时间设为白天:

/time set day

把昼夜循环推进到下一个「白天」时刻(1000 刻),天空立即转亮,阳光重新照射,适合快速结束夜晚。

时间前进 1000 刻:

/time add 1000

在当前昼夜循环时间上累加 1000 刻(约 50 秒真实时间),太阳与月亮沿轨迹向前移动一小段,可用于缓慢推进时间或微调昼夜阶段。

设为正午并锁定时间:

/time set noon /gamerule doDaylightCycle false

先把时间推进到正午(6000 刻),再关闭昼夜循环,让太阳停留在天空最高点,实现永久的白天。

查询当天时间:

/time query daytime

在聊天栏返回当前「当天时间」(0 到 23999 的整数),可用于调试或记录时间数值。

基岩版注意

  • 需要 OP 等级 1,并且必须在开启作弊(cheats)的世界中执行。
  • 与 Java 版差异:Java 版 /time 需要 OP 等级 2,且支持带单位的时间参数(如 1d、20s、100t),基岩版只接受纯整数刻数。
  • 基岩版使用预设时刻(day、noon 等)时是「向前推进」到目标时刻,而非直接改写;/time set <数量> 在 1.17.30+ 已改为直接设定,旧版本为累加推进。
  • 基岩版提供 Java 版没有的 sunrise(23000)和 sunset(12000)两个预设时刻。
  • 基岩版 /time query 的返回值只显示在聊天栏,无法通过 /execute store 读取或存储,因此无法把时间数值写入计分板或用于条件判断。
  • 锁定时间需配合 /gamerule 的 doDaylightCycle 规则;关闭后昼夜循环时间停止增长,但 gametime 仍继续累积。

常见问题

执行 `/time set day` 后为什么天数没有回到 0?

基岩版使用预设时刻时是向前推进而非直接改写。如果当前已经过了当天的 1000 刻,/time set day 会推进到下一轮的 1000 刻,天数只会增加不会减少。要直接设定某个刻数,请使用 /time set 1000。

如何让世界永远是白天?

先执行 /time set day 或 /time set 6000 把时间调到白天,再执行 /gamerule doDaylightCycle false 关闭昼夜循环。需要恢复时执行 /gamerule doDaylightCycle true 即可。

`daytime`、`gametime` 和 `day` 有什么区别?

daytime 是当天时间(0 到 23999),gametime 是世界自创建以来累计的总游戏刻数,day 是已完整经过的天数。其中只有 gametime 不受 /time set、/time add 的影响。

把时间设到 0 刻是什么时刻?

0 刻是日出(一天的开始),而不是正午。一天中的关键刻度为:0 刻日出、6000 刻正午、12000 刻日落、18000 刻午夜。

相关命令

  • /gamerule — 通过 doDaylightCycle 规则控制昼夜循环是否运行,常与 /time 配合实现时间锁定。
  • /weather — 设置天气(晴、雨、雷暴),与昼夜时间共同影响环境氛围。