使用方法
- 在「出生公历日期」选生日(示例 1990-06-15)。这里填的是公历(阳历、格里高利历),不是农历生日;如果你手上只有农历生日,先用农历公历转换换成公历再填。
- 在「出生时刻」填北京时间(示例 08:30)。这一栏不影响太阳星座,只决定十二时辰与真太阳时;如果你只想看星座,随便填一个时刻也不影响结论。
- 在「出生地经度」填东经度数(示例 116.4,北京)。不确定就查下表 24 个城市,或按「省份中心经度」估一个;这一栏决定经度时差。
- 点「计算星座与时辰」,或直接裸按 Enter(三个都是单行控件,Enter 没有别的语义)。改动任一格都会立刻重算。
- 结果区给出八张卡片:太阳星座、星座区间、距下一星座天数、生肖、干支年、北京时间时辰、真太阳时、真太阳时时辰。下面的经度对照表可「加载更多」「导出 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(北京)。逐项复算:
- 太阳星座:6 月 15 日落在 5.21~6.21 内 → 双子座;
6 月 22 日 − 6 月 15 日 = 7 天,距下一星座巨蟹座 7 天; - 干支:
1990 − 4 = 1986;1986 mod 10 = 6→ 庚,1986 mod 12 = 6→ 午 → 庚午年,生肖马,六十甲子第 7 位; - 北京时间 08:30 → 辰时(07:00~08:59);
- 经度时差:
(116.4 − 120) × 4 = −14.4分钟; - 均时差:1990 年 6 月 15 日是年内第 166 天(1990 非闰年),代入近似式得 −0.24 分钟;
- 真太阳时:
08:30 − 14.4 − 0.24 = 08:15:22,仍落在 辰时; - 反例对照:同一时刻在乌鲁木齐(87.6°E)真太阳时约
08:30 − 129.6 = 06:20→ 卯时,与北京相差一个时辰;在哈尔滨(126.6°E)约08:30 + 26.4 = 08:56→ 仍是辰时。
对照表里可以印证:12 星座表第 3 行「双子座 5.21~6.21」与结果卡的星座区间一致;24 城市表第 1 行「北京 116.4 −14.4 分 08:15 辰时」与上面的真太阳时计算同源(表里给到分钟、不含均时差,结果区给到秒并含均时差)。三处用的都是同一个 116.4 与 08:30。
输入范围与对照表
- 出生日期:1900-01-01 ~ 2100-12-31。超出范围会明确提示;不存在的日期(如 2023-02-30)会提示「该日期不存在」而不是被悄悄顺延。
- 出生时刻:00:00 ~ 23:59,按分钟。
step=60表示秒不参与计算——真太阳时修正量本身就是分钟级,给到秒是伪精度。 - 出生地经度:73.0 ~ 135.0,
step=0.1。这是中国领土的东西跨度(最西约东经 73°40′ 的帕米尔,最东约东经 135°05′ 的黑龙江与乌苏里江交汇处),最东与最西真太阳时相差 245.6 分钟 ≈ 4.1 小时。
下面两张表分别是十二星座的公历区间(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 天,原因是它们用的是太阳进入该宫的实际时刻(每年浮动数小时)而不是整齐的日期区间。本页采用整齐日期区间,并明确标注边界日,交界出生的人请以更精确的星历表为准。
边界与精度说明
- 1912 年是公历与农历的官方分界。1912 年(民国元年)起,中国以公历为官方历法,此前官方纪年使用农历(及帝王年号)。本页接受 1900 年起的日期,若你输入 1912 年之前,会提示这个「公历日期」是按现代格里高利历回推的,与当时的农历日期不直接对应,生肖请以农历口径核对。
- 生肖两种口径的影响区间。按立春(约 2 月 3~5 日)与按正月初一(公历 1 月下旬到 2 月下旬浮动)分别切换。2024 年立春 2 月 4 日、正月初一 2 月 10 日,两者相差 6 天;2025 年立春 2 月 3 日、正月初一 1 月 29 日,正月初一反而更早。因此「1 月上旬~2 月中旬出生」是唯一需要双口径核对的人群,其余日期两种口径结论一致。
- 真太阳时的误差来源。均时差用的是近似式,全年最大误差约半分钟;加上你填的经度本身是「城市中心值」而非出生点精确经度,每 0.1° 对应 24 秒误差。对时辰判定来说,只要不贴着整点边界(如 06:59 或 07:00),这点误差不会改变结论。若出生时刻正好落在时辰交界前后 1 分钟内,页面会照实显示并提示「处于时辰交界附近」。
- 子时跨日。北京时间 23:00 之后已进入次日子时。本页不改你输入的日期,但在结果里注明「已跨日进入次日子时」,因为传统排盘里这会改变日柱。
- 时区前提。本页把输入时刻一律当作北京时间(UTC+8)。1949 年以前中国曾划分过多个时区(如中原标准时间、陇蜀时间),若你的出生记录是当年本地时间,请先换算成北京时间再填。中文星座计算器只接受北京时间一个口径,不做多时区自动猜测。
- 太阳星座与时辰无关。改出生时刻,星座、生肖、干支三张卡不会变;只有时辰与真太阳时两张卡会变。这是本页刻意保持的分离——不同变量管不同结论。
常见问题
我 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 面板可以看到从输入到出结果零请求;刷新页面后三个控件回到默认值,你的生日不会留下。