piapia123
zh

日出日落与月相

转换

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

给出一个地点与日期,算出这一天的太阳时刻与月亮状态。 时区用真的时区,不是让你自己填偏移。 复用站上「时间戳」那份 IANA 时区数据,夏令时是算进去的 —— 伦敦六月按 BST 显示(+01:00),十二月按 GMT(+00:00)。而且偏移是按当地正午那一刻取的,不是按 UTC 午夜:夏令时切换正好发生在某天凌晨时,按午夜取会让日出差出一小时。 ⚠️ 精度说清楚,不做「精确到秒」的假承诺: · 日出日落用 NOAA 的算法,中等纬度上误差约 ±1 分钟。更重要的是它算的是理想地平线 —— 有山、有楼、或站在山谷里,实际看到的日出日落可以差十几分钟。 · 月相用低精度月球黄经,照亮比例的误差约 1–2 个百分点。它回答的是「今晚是上弦还是满月」,不是「几点几分合朔」。 ⚠️ 极昼极夜会明说。 高纬度有些日子太阳根本不升或不落,这时候结果写「极昼」「极夜」,而不是给一个看着正常的时间。全部在浏览器本地完成。

功能

  • 日出、太阳正午、日落、昼长
  • ⚠️ 按当地正午的那一刻取时区偏移,所以夏令时切换日不会差一小时
  • 三种晨昏蒙影:民用(−6°)、航海(−12°)、天文(−18°)的起止
  • ⚠️ 蓝调时刻与黄金时刻:各自给出「早上那一段 / 傍晚那一段」。蓝调是太阳在地平线下 4° 到 6°(天光最后一层、街灯已亮),黄金是 −4° 到 +6°(色温低、影子长、光更柔)—— 两者都是摄影上真正在用的区间
  • 这两个区间的边界值写在标签里(`-4° ~ +6°`),因为它们是行业惯例而不是物理定律:各家给的上边界从 +4° 到 +6° 都有,与你手上的别的工具对不上时,看数字就知道差在哪
  • ⚠️ 极昼极夜时这两行给一句话,而不是两个看起来正常的假时间
  • ⚠️ 极昼与极夜明确写出来,不给一个看起来正常的假时间
  • 月相:相名(八个相位)、照亮比例、月龄、月日黄经差
  • 日期可以是任意一天,用于查历史或未来的日出
  • 坐标接受 `39.9, 116.4`、`39.9 116.4`,也接受 `39.9N 116.4E` 这类带方位字母的写法
  • ⚠️ 结果里写明算法与精度(±1 分钟、理想地平线、月相 1–2 个百分点)
  • 全部在浏览器本地完成,不发任何网络请求

使用方法

  1. 输入纬度与经度(南纬西经写负号)
  2. 选日期与时区
  3. 结果给出太阳时刻、三种晨昏蒙影与月相

常见问题

为什么算出来的日出和我看到的不一样?
两个原因。第一,算法算的是理想地平线 —— 一个绝对平坦、没有遮挡的地平。你家东边有座山或一栋楼,实际看到太阳的时间就会晚十几分钟到几十分钟;站在山谷里则更晚。第二,算法本身在中等纬度有约 ±1 分钟的误差,高纬度会大一些。所以要精确到「我这里几点看到太阳」,需要的是地平线数据,不是一个更好的公式。
为什么昼长不是 12 小时?春分不是应该正好一半一半吗?
春分那天各处昼长都约 12 小时 7 分,不是 12 小时整。多出来的那 7 分钟来自两件事:大气把太阳光折射了约 34 角分(所以太阳还在地平线下时就已经能看见了),以及太阳本身有约 16 角分的视半径(它的上缘碰到地平线就算日出,而那时中心还在地平线下)。两者合起来让「日出」的定义天顶角变成 90.833° 而不是 90°,昼长因此总是偏长一点。
时区偏移是怎么取的?夏令时算了吗?
算了。偏移是按当地正午那一时刻取的,不是按 UTC 午夜。这个选择有实际原因:夏令时切换通常发生在某天凌晨,按 UTC 午夜取那一刻还在旧偏移上,于是那一天的日出会显示成差一小时 —— 而用户完全看不出是时区的问题。当地正午一定已经在新偏移里了。
为什么没有月出月落?
因为月球的视运动比太阳快得多(每天约 13°,太阳是 1°),它的升起时刻每天推后约 50 分钟,而近地点附近还会更多。要算准需要逐步求解月球位置而不是一次解出时角,是另一个量级的计算。这个工具目前只给月相,那一部分用低精度级数就够了。
月相能用来判断哪天是农历初一十五吗?
方向对但不能直接换算。农历的月首是朔(日月黄经差为 0)发生的那一天,而这个工具给的是所选日期的黄经差与照亮比例。你可以用它找到朔附近的日子,但农历还有自己的历法规则(时区、闰月),要从这里推出农历日期是不可靠的。

相关工具