月相阶段计算器

输入一个日期和时刻,算出月球当时的相位角、月龄、照亮比例和所属的八相阶段(新月、娥眉月、上弦月、盈凸月、满月、亏凸月、下弦月、残月),并把这种简化算法相对精确星历的误差范围一并写出来。

相位角251.7°0° 为新月,180° 为满月
月龄20.65 天距上一次新月的天数
照亮比例65.7%(1−cos θ)/2
所处阶段🌗 下弦月判定区间 247.5°–292.5°
盈亏方向渐亏相位角 > 180°
距下次新月8.885 天2026-10-11 17:13(UTC+8)
距下次满月23.650 天2026-10-26 11:35(UTC+8)
该时区的 UTC 时刻2026-10-02 12:00示例填的是 UTC+8 的 20:00
下一次相位时刻(所选时区)距今(天)
🌑 新月2026-10-11 17:138.885
🌓 上弦月2026-10-19 02:2416.267
🌕 满月2026-10-26 11:3523.650
🌗 下弦月2026-10-04 08:021.502

提示:日期、时刻、时区三个输入框里按 Enter 就会立即重算。示例值是「2026-10-02 20:00,UTC+8」这一刻的演示结果。

使用方法

  1. 在「日期」里选 2026-10-02。可选范围是 1900-01-01 到 2100-12-31,填成别的年份会在下方红框里点名是哪个字段越界。
  2. 在「时刻」里填 20:00。这里按 24 小时制,最小步长 1 分钟;留空时按 00:00 处理。
  3. 在「时区偏移」里填 8,表示北京时间 UTC+8。范围是 −12 到 +14,步长 0.25,所以印度填 5.5、尼泊尔填 5.75 都能精确保留。
  4. 按 Enter 或点「计算月相」。示例这一刻算出:相位角 251.7°、月龄 20.65 天、照亮 65.7%、阶段 下弦月、盈亏方向为渐亏。
  5. 再往下看「下一次相位」表,示例给出距下次下弦 1.502 天、距下次新月 8.885 天、距下次满月 23.650 天,时刻都已按你填的时区换算过。
  6. 点「复制结果」把八项指标一起带走;点「用此刻」会把日期和时刻换成你设备当前的本地时间,时区偏移那一栏保持你填的值不变——因为浏览器并不知道你在哪个时区。

这个月相阶段计算器能解决什么问题

一是给观星和摄影挑日子。月光是夜景和深空摄影最大的干扰源,真正适合拍银河的窗口是新月前后两三天的残月和新月阶段(相位角在 337.5°–22.5° 之间);反过来想拍满月地景,就要把相位角对到 157.5°–202.5° 这一档。

二是核对「某一天是不是满月」这类说法。口头相传的「十五的月亮十六圆」指的是农历日期,而相位角是连续量:月亮在满月前后各 22.5°(约 ±1.85 天)内看起来都接近圆,本页给出的是连续角度而不是离散的「是/否」。

三是给文案、课件、排版稿核月相。写「当天是上弦月」之前先查一下角度,避免出现上弦月却配了满月插图这类硬伤。

四是把「月龄」这个量讲清楚。很多人把月龄当成农历日期,其实它只是距上一次新月的天数,取值范围是 0 到 29.53;农历日期还要考虑定朔时刻、闰月和时区,两者不是一回事。

本页不做这些事:不算月出月落与中天时刻(那需要观测地经纬度)、不算月亮所在的星座或赤纬、不做农历与公历的日期互转、也不判断南北半球看到的月面朝向(同一相位角在南半球看起来是左右翻转的)。要算两个日期之间相差多少天请用日期差值计算器,要把某个日期往后推若干天请用日期加天数计算器。

相位角与八相的计算原理

核心公式只有一条:把目标时刻减去一个已知的新月时刻,除以平均朔望月,取余数的小数部分再乘 360°,就是相位角。写成算式是 θ = ((t − t₀) mod 29.530588853) ÷ 29.530588853 × 360°,其中 t₀ 取 2000-01-06 18:14 UTC(儒略日约 2451550.26),t 与 t₀ 的差用毫秒差除以 86400000 换算成天。月龄就是那个余数本身,单位是天。

为什么周期取 29.530588853 而不是 29.53 或 29.5。这是 J2000 历元的平均朔望月,折合 29 天 12 小时 44 分 2.9 秒。若用 29.53,每个朔望月就累积 0.000588853 天(约 50.9 秒)的系统偏差;一年有 365.25 ÷ 29.530588853 ≈ 12.37 个朔望月,一年累积约 10.5 分钟,十年约 1.75 小时——已经足以把「满月出现在哪一天」推到相邻的日期上。若图省事用 29.5,每个周期差 0.030588853 天(约 44 分钟),一年就差 9 小时,结果基本不可用。

八相的划分是「就近取整」而不是「按 45° 切八段」。八个名称各对应一个中心角度,每相邻两个相距 45°,折合 29.530588853 ÷ 8 = 3.6913 天。判定用 index = floor(((θ + 22.5°) mod 360°) ÷ 45°),也就是给每个中心角留出 ±22.5° 的半宽:θ = 251.690° 落在 247.5°–292.5° 里,所以是下弦月而不是亏凸月。±22.5° 折合 44.30 小时,这就是「同一阶段」在时间上的宽度。

照亮比例用的是几何近似:k = (1 − cos θ) ÷ 2。θ = 0° 时 k = 0,θ = 90°(上弦)时 k = 0.5,θ = 180° 时 k = 1。它假设太阳光是平行光、月球是理想球体,不含地影(那是月食的范畴),也不含月面反照率随入射角变化的真实光变——所以「照亮 50%」不等于「看起来亮了一半」,人眼对低照度非常敏感,10% 照亮的月牙在暗夜已经相当显眼。

依据的标准与数据链:平均朔望月数值与月球位置的理论取自 Meeus《Astronomical Algorithms》第 47 章(月球视黄经展开)与第 49 章(朔望时刻),月相阶段计算器只用了它的平均周期项,没有代入月亮和太阳的中心差、出差、二均差等周期改正项。时刻一律按 UTC 处理,不引入闰秒——JavaScript 的 Date 基于 Unix 毫秒,把每一天都当作 86400000 毫秒,这与含闰秒的 UTC 之间有累计约 27 秒的量级差,对本页的精度不构成影响。

常见误用的正确解释:把「月龄 20.65 天」当成「农历二十」是最典型的误读。月龄是一个纯几何量,农历日期则由实际合朔时刻加时区决定,两者可以相差一两天;反过来,看到「上弦月」就以为「上半夜才有月亮」也不对,上弦月是相位角 90° 这一状态,它大约在正午升起、午夜落下,上半夜确实可见,但描述的是相位而不是出没时间。

完整示例(数值仅作演示)

示例条件就是月相阶段计算器打开时三个输入框里的默认值:日期 2026-10-02、时刻 20:00、时区偏移 +8。逐步换算如下,每一步的中间量都列出来,可以拿计算器对拍:

  1. 把挂钟时间换成 UTC:20:00 减去 8 小时,得到 UTC 2026-10-02 12:00。
  2. 减历元:该时刻与 2000-01-06 18:14 UTC 相差 9765.7403 天。
  3. 数朔望月:9765.7403 ÷ 29.530588853 = 330.6991,整数部分 330 是已经过去的完整朔望月个数,小数部分 0.6991 是当前这一轮的进度。
  4. 算月龄:0.6991 × 29.530588853 = 20.6460 天,这就是「距上一次新月多久」。
  5. 算相位角:20.6460 ÷ 29.530588853 × 360° = 251.690°。
  6. 算照亮比例:(1 − cos 251.690°) ÷ 2 = 65.71%。
  7. 定阶段:(251.690 + 22.5) ÷ 45 = 6.093,向下取整得 6,对应 下弦月(判定区间 247.5°–292.5°);因为 θ 大于 180°,盈亏方向为渐亏。
  8. 推下次相位:从 251.690° 各中心角还差多少度,换算成天,得到距下弦 1.502 天(2026-10-04 08:02)、距新月 8.885 天(2026-10-11 17:13)、距上弦 16.267 天(2026-10-19 02:24)、距满月 23.650 天(2026-10-26 11:35),时刻均按 UTC+8 显示。

八相角度与月龄对照表

八个阶段各占 45°,彼此相距 3.6913 天。下表把中心角、月龄、判定区间和该角度上的照亮比例列在一起,左边进度条高亮的那一格就是当前阶段:

阶段中心相位角月龄(天)判定区间中心角处照亮
🌑 新月0°0.0000337.5°–22.5°0.0%
🌒 娥眉月45°3.691322.5°–67.5°14.6%
🌓 上弦月90°7.382667.5°–112.5°50.0%
🌔 盈凸月135°11.0740112.5°–157.5°85.4%
🌕 满月180°14.7653157.5°–202.5°100.0%
🌖 亏凸月225°18.4566202.5°–247.5°85.4%
🌗 下弦月270°22.1479247.5°–292.5°50.0%
🌘 残月315°25.8393292.5°–337.5°14.6%

角度偏差和时间偏差是线性关系:相位角每走 1° 相当于时间上走 29.530588853 ÷ 360 × 24 = 1.9687 小时。下面这张表把常见的几个角度换算成小时,用于判断误差会不会跨过某一天:

角偏差折合时间意味着什么
1°1.97 小时同一个小时量级的误差,不影响日期判断
5.14°10.11 小时2026–2027 两年逐日实测的均方根偏差
10.99°21.64 小时实测最大偏差(出现在 2027-09-06),已接近一整天
22.5°44.30 小时八相判定的半宽,超过它就判错一个阶段
45°88.59 小时整整一个阶段,约 3.69 天

输入范围、边界与精度说明

常见问题

为什么这里算的满月时间和手机日历差几个小时?

因为本页用的是平均朔望月线性外推,省略了月球运动的周期改正项。实测与精确展开相比最大可差约 21.6 小时、典型差 10 小时量级。手机日历和专业星历软件查的是带改正项的朔望时刻,要精确到分钟请以它们为准;月相阶段计算器用来判断阶段和挑日子是够的。

「月龄 20.65 天」是不是就是农历二十?

不是。月龄是距上一次新月的天数,是连续量,取值 0 到 29.53;农历日期由实际合朔时刻加时区决定,还要处理闰月,两者经常差一两天。本页不做农历换算。

为什么我填的日期和结果里的 UTC 时刻差了 8 小时?

因为时区偏移填的是 +8。本页先把你填的挂钟时间当成 UTC+8 的本地时间,再减去 8 小时换成 UTC,然后才减历元。结果卡片里同时列出了该时区的 UTC 时刻和「距下次新月」的本地时刻,方便核对。

时区偏移能不能填小数?

能,步长是 0.25 小时。印度填 5.5、尼泊尔填 5.75 都可以。填成整数近似也不会报错,只是时刻会偏 15 到 45 分钟,折算成相位角不到 0.6°。

日期能算到 1900 年之前或者 2100 年之后吗?

不能,本页把范围限定在 1900-01-01 到 2100-12-31,越界时会在红框里点名年份字段。离历元越远,被省略的周期改正项累积得越多,线性外推的结果就越不可靠,所以宁可拒绝也不给一个看着像样的数字。

上弦月到底是上半月还是上半夜?

是相位角 90° 这一状态,与「上半月」无关(一个朔望月 29.53 天,上弦出现在第 7.38 天,确实在前半段,但这是巧合式的描述,不是定义)。它大约在正午升起、午夜落下,所以上半夜能看到;描述出没时间需要月出月落计算,本页不提供。

「照亮 50%」为什么看起来不像一半?

照亮比例是几何量 (1 − cos θ) ÷ 2,描述被太阳照亮的月面圆盘占整个可见半球的比例;人眼对亮度的感受是非线性的,加上月面地形反光并不均匀,所以 50% 照亮的弦月在肉眼看来往往比「一半亮」更亮一些。

计算结果会上传或者被保存吗?

不会。相位角、月龄、照亮比例和下一次相位时刻全部由页面里的算术算出,不发出任何网络请求,也不写入浏览器存储,刷新后输入框回到默认值。想自己核实,可以打开开发者工具的 Network 面板,点「计算月相」时观察是否有请求发出。

相关工具