日出日落与月相
转换所有处理都在浏览器本地完成,数据不上传服务器
给出一个地点与日期,算出这一天的太阳时刻与月亮状态。 时区用真的时区,不是让你自己填偏移。 复用站上「时间戳」那份 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 分钟的误差,高纬度会大一些。所以要精确到「我这里几点看到太阳」,需要的是地平线数据,不是一个更好的公式。
- 为什么昼长不是 12 小时?春分不是应该正好一半一半吗?
- 春分那天各处昼长都约 12 小时 7 分,不是 12 小时整。多出来的那 7 分钟来自两件事:大气把太阳光折射了约 34 角分(所以太阳还在地平线下时就已经能看见了),以及太阳本身有约 16 角分的视半径(它的上缘碰到地平线就算日出,而那时中心还在地平线下)。两者合起来让「日出」的定义天顶角变成 90.833° 而不是 90°,昼长因此总是偏长一点。
- 时区偏移是怎么取的?夏令时算了吗?
- 算了。偏移是按当地正午那一时刻取的,不是按 UTC 午夜。这个选择有实际原因:夏令时切换通常发生在某天凌晨,按 UTC 午夜取那一刻还在旧偏移上,于是那一天的日出会显示成差一小时 —— 而用户完全看不出是时区的问题。当地正午一定已经在新偏移里了。
- 为什么没有月出月落?
- 因为月球的视运动比太阳快得多(每天约 13°,太阳是 1°),它的升起时刻每天推后约 50 分钟,而近地点附近还会更多。要算准需要逐步求解月球位置而不是一次解出时角,是另一个量级的计算。这个工具目前只给月相,那一部分用低精度级数就够了。
- 月相能用来判断哪天是农历初一十五吗?
- 方向对但不能直接换算。农历的月首是朔(日月黄经差为 0)发生的那一天,而这个工具给的是所选日期的黄经差与照亮比例。你可以用它找到朔附近的日子,但农历还有自己的历法规则(时区、闰月),要从这里推出农历日期是不可靠的。
相关工具
时间戳转换
转换把 Unix 时间戳还原成日期时间,或反过来。秒 / 毫秒 / 微秒 / 纳秒自动识别,支持小数、负数与 Windows FILETIME。全部在浏览器本地完成。
日期计算
转换算两个日期之间相差多少天,或给一个日期加减若干天、周、月。日期用日历挑或直接粘贴,结束日期留空就与今天比较。全部在浏览器本地完成。
跨时区会议时间
转换把多个时区的 24 小时排成一张对照表,标出各城市的工作时段、当地星期与日期偏移,并找出所有人都在工作时段的重叠区间。含夏令时。
进制转换
转换在二、八、十、十六、36、64 进制之间互转,六种结果一次全部给出,19 位的雪花 ID 也能一位不差。全部在浏览器本地完成。
Cron 解析
转换把 cron 表达式逐字段讲成人话,算出接下来几次与上一次的执行时间;永远不会触发的表达式会当场说明原因。全部在浏览器本地解析。
颜色转换
转换在 HEX、RGB、HSL、HWB、CMYK 与 OKLab、OKLCH、Lab、XYZ 之间互转,另给出色温、反色、互补色、最接近的 ANSI 终端色与 WCAG 对比度。全部在浏览器本地完成。