中文星座计算器

一个公历生日 + 一个出生时刻 + 一个出生地经度。输出太阳星座(十二星座,公历区间判定)、生肖与干支年(六十甲子,含立春分界说明)、十二时辰,并把北京时间修正成真太阳时——经度每差 1° 差 4 分钟,乌鲁木齐与北京同刻能差出一个时辰。

范围 1900-01-01 ~ 2100-12-31;星座按公历日期判定
范围 00:00~23:59,只影响时辰与真太阳时,不影响星座
中国境内 73.0~135.0;北京 116.4、上海 121.5、乌鲁木齐 87.6
出生:公历 1990-06-15 08:30(北京时间),出生地经度 116.4°E(北京)

太阳星座 = 双子座(5.21~6.21)
  6 月 15 日落在双子区间内;距离下一星座巨蟹座(6.22 起)还有 7 天
  对照:6.21 仍属双子,6.22 起才转入巨蟹

生肖与干支年 = 庚午年 · 马(六十甲子第 7 位)
  公式:(年 − 4) mod 10 = 天干序,(年 − 4) mod 12 = 地支序
  (1990 − 4) = 1986;1986 mod 10 = 6 → 庚;1986 mod 12 = 6 → 午
  分界提示:本页按公历年给出;若按「立春」口径,1990-02-04 之前出生应算己巳年(蛇)

时辰(按北京时间)= 辰时(07:00~08:59)
真太阳时修正
  经度时差 = (116.4 − 120) × 4 = −14.4 分钟
  均时差(6 月 15 日,年序日 166)= −0.24 分钟
  真太阳时 = 08:30 − 14.4 − 0.24 = 08:15:22 → 仍是辰时
反例(同一时刻,不同经度会产生不同时辰)
  乌鲁木齐 87.6°E:时差 −129.6 分钟 → 真太阳时 06:20 → 卯时(比辰时早一个时辰)
  哈尔滨 126.6°E:时差 +26.4 分钟 → 真太阳时 08:56 → 辰时(仍在辰时边界内)

(以上为服务端直出的演示值,改动任一输入框或点「计算星座与时辰」会用你的数覆盖)

十二星座公历区间对照(12 行)

星座公历区间四象守护星符号
白羊座3.21~4.19火象火星♈
金牛座4.20~5.20土象金星♉
双子座5.21~6.21风象水星♊
巨蟹座6.22~7.22水象月亮♋
狮子座7.23~8.22火象太阳♌
处女座8.23~9.22土象水星♍
天秤座9.23~10.23风象金星♎
天蝎座10.24~11.22水象冥王星♏
射手座11.23~12.21火象木星♐
摩羯座12.22~1.19土象土星♑
水瓶座1.20~2.18风象天王星♒
双鱼座2.19~3.20水象海王星♓

经度时差对照(24 城市,默认北京 08:30 口径)

城市中心东经经度时差地方平太阳时对应时辰
北京116.4−14.4 分08:15辰时
上海121.5+6.0 分08:36辰时
广州113.3−26.8 分08:03辰时
深圳114.1−23.6 分08:06辰时
天津117.2−11.2 分08:19辰时
重庆106.5−54.0 分07:36辰时
成都104.1−63.6 分07:26辰时
武汉114.3−22.8 分08:07辰时
西安108.9−44.4 分07:45辰时
杭州120.2+0.8 分08:31辰时
南京118.8−4.8 分08:25辰时
沈阳123.4+13.6 分08:43辰时
哈尔滨126.6+26.4 分08:56辰时
长春125.3+21.2 分08:51辰时
济南117.0−12.0 分08:18辰时
郑州113.6−25.6 分08:04辰时
长沙113.0−28.0 分08:02辰时
福州119.3−2.8 分08:27辰时
昆明102.7−69.2 分07:21辰时
兰州103.8−64.8 分07:25辰时
乌鲁木齐87.6−129.6 分06:20卯时
拉萨91.1−115.6 分06:34卯时
海口110.3−38.8 分07:51辰时
呼和浩特111.7−33.2 分07:57辰时

使用方法

  1. 在「出生公历日期」选生日(示例 1990-06-15)。这里填的是公历(阳历、格里高利历),不是农历生日;如果你手上只有农历生日,先用农历公历转换换成公历再填。
  2. 在「出生时刻」填北京时间(示例 08:30)。这一栏不影响太阳星座,只决定十二时辰与真太阳时;如果你只想看星座,随便填一个时刻也不影响结论。
  3. 在「出生地经度」填东经度数(示例 116.4,北京)。不确定就查下表 24 个城市,或按「省份中心经度」估一个;这一栏决定经度时差。
  4. 点「计算星座与时辰」,或直接裸按 Enter(三个都是单行控件,Enter 没有别的语义)。改动任一格都会立刻重算。
  5. 结果区给出八张卡片:太阳星座、星座区间、距下一星座天数、生肖、干支年、北京时间时辰、真太阳时、真太阳时时辰。下面的经度对照表可「加载更多」「导出 CSV」「复制对照表」。

这个中文星座计算器能解决什么问题

一是「生日卡在星座交界那两天」的问题。6 月 21 日仍属双子座、6 月 22 日才转巨蟹座,但不同网站对交界日有一到两天的出入——因为太阳真正进入某个星座的时刻逐年不同。本页把每个星座的公历区间逐行列在表里,并在结果区同时给出「距下一星座还有几天」,交界日的判断一眼可见。

二是「同一时刻、不同城市算错时辰」的问题。中国传统时辰按当地时间(真太阳时)划分,而手机上显示的是北京时间(东经 120° 标准时)。乌鲁木齐(87.6°E)与北京(116.4°E)同在东八区,但真太阳时相差约 1 小时 55 分:北京时间 08:30 在乌鲁木齐是 06:20 左右,落进卯时,而北京还是辰时。本页把经度时差与均时差两条修正都算出来,避免把「东八区」当成「同一条时辰线」。

三是「生肖到底按哪一天换」的问题。生肖归属有两种口径:按立春(太阳到达黄经 315°,公历约 2 月 3~5 日)或按正月初一(农历年首)。同一年 1 月上旬到 2 月中旬出生的人,两种口径可能给出不同生肖。本页按公历年给出干支与生肖,并在结果里明确提示这一分界线与影响区间,不替你武断选边。

四是「农历与公历的年份边界」被忽略的问题。1912 年(民国元年)起中国才以公历为官方历法,此前官方使用农历纪年。如果你输入 1912 年之前的生日,本页会提示:那个「公历日期」是用现代格里高利历回推的,与当时的农历日期并不对应,生肖请改用农历口径核对。

中文星座计算器不做这些事:不算上升星座、月亮星座与本命盘——它们需要出生时刻的精确分钟、出生地经纬度与黄道倾角模型,本页只做太阳星座(日期即可判定)与时辰换算;不做星座配对与性格解读;仅给星座符号的页面见星座符号计算器,只算周岁年龄用年龄计算器。

原理与规则说明(含关键变量)

中文星座计算器的输出全部来自三条彼此独立的规则:星座查表、干支取模、真太阳时修正。三条互不相干,改一个输入只会影响其中一部分——这也是下面把公式逐条拆开的原因。

太阳星座:查表,不查天。本页用的是传统的黄道十二宫(tropical zodiac)日期区间,即把黄道均分成 12 段、以春分点为白羊 0°,每段 30°。判定函数只比较「月、日」两个整数:把十二个区间写成一维数组,逐个判断当前 (月, 日) 是否落在 [起月.起日, 终月.终日] 内,摩羯座跨年(12.22~1.19)单独处理。整个判定不涉及经纬度、不涉及出生时刻,因此**太阳星座与时辰无关**。注意这与天文上的「星座实际所在天区」不同:岁差让黄道十二宫与真实星座已错开约一个宫位,本页采用大众通用口径,并在表里给出区间。

生肖与干支年:纯公式,且必须说清分界。六十甲子是天干(10)× 地支(12)的最小公倍数 60。给定公历年 y:天干序 = (y − 4) mod 10,地支序 = (y − 4) mod 12,生肖由地支序映射(子鼠、丑牛、寅虎……)。以 1984 年为甲子年(六十甲子第 1 位)作为锚点最好记:(1990 − 4) = 1986,1986 mod 10 = 6 → 庚,1986 mod 12 = 6 → 午,所以 1990 是庚午年(马),第六十甲子第 7 位。公式的隐患只有一个:它按公历年整体切换,而民俗上的切换点在立春或正月初一。因此 1 月上旬到 2 月中旬出生的人,需要把年份减 1 再算一次核对。

真太阳时:两条修正相加。公式是 真太阳时 = 北京时间 + 经度时差 + 均时差。① 经度时差 = (经度 − 120) × 4 分钟——因为北京时间以东经 120° 为标准,每偏离 1° 差 4 分钟;乌鲁木齐 87.6°E 得 (87.6 − 120) × 4 = −129.6 分钟。② 均时差(Equation of Time)是地球轨道偏心率与黄赤交角造成的「真太阳时与平太阳时」之差,本页用标准的近似式 EoT = 9.87·sin2B − 7.53·cosB − 1.5·sinB(分钟),其中 B = 2π(N − 81)/364,N 是年序日。该式在全年最大误差约半分钟:2 月中旬约 −14.6 分钟、11 月初约 +16.4 分钟、6 月 15 日仅 −0.24 分钟(因为年序日 166 恰在零点附近)。

十二时辰:两小时一档,子时跨日。子时 23:00~00:59、丑时 01:00~02:59、寅时 03:00~04:59、卯时 05:00~06:59、辰时 07:00~08:59、巳时 09:00~10:59、午时 11:00~12:59、未时 13:00~14:59、申时 15:00~16:59、酉时 17:00~18:59、戌时 19:00~20:59、亥时 21:00~22:59。换算方式是把「小时 % 24」再判断落在哪两小时间;关键变量是子时跨日:23:00 已进入新一天的子时,而不是旧一天的亥时——排八字时这条会改变日柱,本页只在文本里提示,不改动你的输入日期。

为什么本页不算上升星座。上升星座(Ascendant)是出生瞬间东方地平线所指向的黄道度数,它随地球自转变化,每约 4 分钟移动约 1°,所以需要:出生时刻精确到分钟、出生地经度与纬度、以及该时刻的地方恒星时(LST)。算法链是 LST → RAMC → ASC = atan2(cos RAMC, −(sin RAMC·cos ε + tan φ·sin ε)),其中 ε 是黄赤交角、φ 是出生地纬度。少任何一个输入都会得到完全不同的结果。本页的输入里没有纬度、时间粒度只到分钟,因此明确不提供上升星座,以免给出看似精确实则错误的度数。

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

示例条件:公历 1990-06-15、北京时间 08:30、经度 116.4°E(北京)。逐项复算:

对照表里可以印证:12 星座表第 3 行「双子座 5.21~6.21」与结果卡的星座区间一致;24 城市表第 1 行「北京 116.4 −14.4 分 08:15 辰时」与上面的真太阳时计算同源(表里给到分钟、不含均时差,结果区给到秒并含均时差)。三处用的都是同一个 116.4 与 08:30。

输入范围与对照表

下面两张表分别是十二星座的公历区间(12 行,静态)与24 个城市的经度时差(默认按北京 08:30 口径,可加载更多):

星座公历区间时长边界易错日
白羊座3.21~4.19约 30 天4.19 末 / 4.20 起金牛
金牛座4.20~5.20约 31 天5.20 末 / 5.21 起双子
双子座5.21~6.21约 32 天6.21 末 / 6.22 起巨蟹(本页示例)
巨蟹座6.22~7.22约 31 天7.22 末 / 7.23 起狮子
狮子座7.23~8.22约 31 天8.22 末 / 8.23 起处女
处女座8.23~9.22约 31 天9.22 末 / 9.23 起天秤
天秤座9.23~10.23约 31 天10.23 末 / 10.24 起天蝎
天蝎座10.24~11.22约 30 天11.22 末 / 11.23 起射手
射手座11.23~12.21约 29 天12.21 末 / 12.22 起摩羯
摩羯座12.22~1.19约 29 天跨年,1.19 末 / 1.20 起水瓶
水瓶座1.20~2.18约 30 天2.18 末 / 2.19 起双鱼
双鱼座2.19~3.20约 30 天3.20 末 / 3.21 起白羊

区间长度在 29~32 天之间不等,这是因为十二宫按黄道 30° 等分,而公历各月天数不同、且太阳视运动速度在近日点附近偏快。不同网站对边界日可能相差 1 天,原因是它们用的是太阳进入该宫的实际时刻(每年浮动数小时)而不是整齐的日期区间。本页采用整齐日期区间,并明确标注边界日,交界出生的人请以更精确的星历表为准。

边界与精度说明

常见问题

我 6 月 21 日出生,到底是双子还是巨蟹?

按本页采用的整齐区间,6 月 21 日属双子座,6 月 22 日起才是巨蟹。但太阳真正进入巨蟹宫的时刻每年不同(取决于当年的星历),所以有的网站会把 6 月 21 日也算成巨蟹。结果卡会显示「距下一星座 1 天」,让你知道正处在交界。要精确到小时,需要查阅当年的天文年历。

为什么改了出生时刻,星座没变?

因为太阳星座由日期决定,一天之内太阳所在黄道宫位不会变(除非正好在某个宫的切换日)。出生时刻只决定十二时辰与真太阳时。本页把这两类输出分开列,就是为了避免误以为「时辰会影响星座」。

生肖该按立春还是正月初一?

两种口径都有人用:命理排盘(八字)多以立春为年界,民俗与春节语境多以正月初一为年界。本页按公历年给出,并提示分界。如果你是 1 月上旬到 2 月中旬出生,请把年份减 1 再算一次对照;两种结果就是两种口径的答案。

真太阳时是不是只要减去经度时差就行?

不够,还要加均时差。经度时差是固定值(只与经度有关),均时差随日期在 −14.6 到 +16.4 分钟之间摆动,是地球轨道偏心率与黄赤交角造成的。本页两条都算了:默认示例里经度时差 −14.4 分钟、均时差 −0.24 分钟,合计 −14.64 分钟。

能不能算上升星座或月亮星座?

本页不算。上升星座要出生时刻精确到分钟 + 出生地纬度 + 地方恒星时,月亮星座要出生时刻对应的月亮黄经。本页输入里没有纬度,也不做星历计算,给不出可靠结果。硬算出来的度数看着精确,误差可能有一整宫位,反而误导。

1950 年以前出生,时辰要额外修正吗?

要。中国在 1949 年之前实行过多个时区(中原标准时间 UTC+8、陇蜀时间 UTC+7 等),部分年份还有夏令时。本页统一按北京时间(UTC+8)计算,如果你手上的出生记录是当年当地的钟表时间,请先查清楚当地当年用的是什么时区,换算成北京时间后再填。

经度该填出生城市还是出生医院?

填到城市中心就够。经度时差每 0.1° 只差 24 秒,而辰时这类时辰跨度是 2 小时,城市内任意两点不会改变时辰结论。真正会改变结论的是「出生地在东八区的东西两端」这种大跨度(如乌鲁木齐 vs 哈尔滨),用城市值绰绰有余。

输入会上传吗?会保存我的生日吗?

不会。整个计算只用你本地浏览器里的 Date 与数学函数,没有 fetch、XMLHttpRequest、表单提交或 localStorage。打开开发者工具的 Network 面板可以看到从输入到出结果零请求;刷新页面后三个控件回到默认值,你的生日不会留下。

相关工具