YiMatrix・アカデミージャーナル
北京時間は自然時間と異なる。真太陽時こそ古人が用いた「標準」
はじめに 現代の時計や「北京時間」が存在しなかった時代、古人は主に天象に頼って時間を計っていました。最も一般的な方法は、太陽の位置や日影の変化を観測して時刻を判断することです。正午には影が最も短く、朝と夕方には最も長くなります。これらの自然の法則が、古代の暦法や術数の演算の基礎となりました。そのため、八字、八卦、奇門、六壬などの伝統的な術数において、五行の盛
はじめに
現代の時計や「北京時間」が存在しなかった時代、古人は主に天象に頼って時間を計っていました。最も一般的な方法は、太陽の位置や日影の変化を観測して時刻を判断することです。正午には影が最も短く、朝と夕方には最も長くなります。これらの自然の法則が、古代の暦法や術数の演算の基礎となりました。
そのため、八字、八卦、奇門、六壬などの伝統的な術数において、五行の盛衰を推論する際に、当初依拠していたのは今日私たちが慣れ親しんでいる北京時間ではなく、より自然に近い真太陽時でした。
北京時間は現代の行政時間であり、東八区の120度経線を基準として、全国の作息を統一しています。一方、真太陽時はこれとは異なり、現地の経度と空における太陽の実際の位置に基づいて計算される天文時間であり、場所によって異なります。つまり、同じ北京時間の瞬間でも、北京、重慶、ウルムチの真太陽時はそれぞれ異なります。
このため、真太陽時のみが現地の時空状態を正確に反映できます。北京時間をそのまま代用すると、古代の術数が当初設定した時空の論理と乖離が生じやすくなります。
真太陽時を計算するには、まず平均太陽時から出発する必要があります。地球の自転と公転は均一ではないため、天球上での太陽の視運動速度には速い遅いがあり、真太陽時と平均太陽時の間に差が生じます。これが均時差と呼ばれるものです。平均太陽時は人為的に平均化された理想的な時間であり、真太陽時は毎日太陽が空にある実際の位置に対応する時刻です。
要点の概念
真太陽時の計算手順は以下の通りです。
-
平均太陽時:現地の経度と標準時(北京時間など)から計算される平均時間。
-
均時差:太陽の実際の運行軌道に基づく差で、平均太陽時を調整するために用いる。
-
真太陽時:平均太陽時に均時差を加えて得られる、現地の天文位置に基づく正確な時間。
真太陽時
真太陽時(True Solar Time, TST) は、空における太陽の位置に基づいて計算される時間であり、標準時(例えば協定世界時 UTC や地方時)とは異なります。真太陽時は、地球の異なる場所における太陽の実際の位置を日々反映するためです。真太陽時は日長の変化に伴い変動します。つまり、地球の軌道が楕円形であることや自転軸の傾きにより、毎日の太陽時は完全には一致しません。真太陽時と標準時の差は、均時差(Equation of Time, EoT) と呼ばれます。
均時差
真太陽時の計算は極めて重要なステップです。しかし、真太陽時を得る前に、まず平均太陽時を計算する必要があります。平均太陽時は地球の自転の平均速度に基づいて計算される時間であり、天文学における「平均太陽」に関連します。これに対し、真太陽時は地球の実際の自転速度と地球軌道の楕円形状に基づいて計算され、毎日の空における太陽の実際の位置を反映します。地球の自転速度は一定ではないため、真太陽時と平均太陽時の間には差が生じ、この差が均時差と呼ばれます。
平均太陽時
平均太陽時(Mean Solar Time)は、地球の自転の平均速度に基づいて計算される時間であり、太陽の毎日の運行が均一であるという仮定に基づいています。天文学では、平均太陽時は「平均太陽」に関連します。平均太陽は仮想的な天体であり、地球の赤道に沿って一定速度で運行すると仮定され、地球の自転の平均速度を表します。
平均太陽時の特徴:
-
恒常性:平均太陽時は、太陽が天球上を毎日一定速度で移動すると仮定するため、日常生活に一定の時間基準を提供できます。
-
時間単位の一致:平均太陽時の1日(24時間)の長さは一定ですが、真太陽時の1日の長さは地球の公転軌道の形状や自転軸の傾きによりわずかに異なります。
-
均時差:真太陽時と平均太陽時の差は均時差(Equation of Time)と呼ばれ、年間を通じて異なり、最大で約16分に達することがあります。
平均太陽時は、現代の時計システム(地方時や世界時など)の基礎としてよく用いられます。これは、単純で比較的正確な時間基準を提供するためです。各地の平均太陽時は、地方経度を調整することで、現地の標準時を反映できます。
平均太陽時を計算する二つの公式の比較
同じパラメータを用いて、特定の都市(例えば重慶市、東経106.55度)の平均太陽時を、異なる時間基準(北京時間とUTC)で計算し、比較します。北京時間を17:58と仮定します。
パラメータ:
- 北京時間:17:58
- UTC時間:北京時間 - 8時間 = 09:58
- 現地経度:106.55度(重慶市)
- 標準経度(中国):120度(中国標準時の基準経度)
- タイムゾーンオフセット:+8時間(重慶は東八区)
1. 公式1:平均太陽時 = 北京時間 + [(現地経度 - 120) × 4分]
計算手順:
- 北京時間 = 17:58
- 現地経度 = 106.55度
- 基準経度 = 120度
- 差 = 106.55 - 120 = -13.45度
- 時間差 = -13.45度 × 4分/度 = -53.8分 = -53分48秒
- 平均太陽時 = 17:58 - 53分48秒 ≈ 17:04:12
結果:
平均太陽時 ≈ 17:04:12(北京時間基準)
2. 公式2:LMST(地方平均太陽時) = UTC + (現地経度 / 15) - タイムゾーンオフセット
計算手順:
- UTC時間 = 北京時間 - 8時間 = 09:58
- 現地経度 = 106.55度
- 経度を15で割る:106.55 / 15 ≈ 7.103時間 ≈ 7時間6分
- タイムゾーンオフセット = +8時間(重慶は東八区)
- LMST = 09:58 + 7時間6分 - 8時間
- LMST = 09:58 + 07:06 - 08:00 = 09:04
結果:
LMST ≈ 09:04(UTC時間基準)
比較:
| 公式 | 時間基準 | 計算結果 | 説明 |
|---|---|---|---|
| 平均太陽時 = 北京時間 + [(現地経度 - 120) × 4分] | 北京時間 | 17:04:12 | 中国のシナリオに適用。北京時間を基準に調整。 |
| LMST = UTC + (現地経度 / 15) - タイムゾーンオフセット | UTC時間 | 09:04 | 汎用公式。世界中の異なる経度やタイムゾーンに適用可能。 |
まとめ:
- 公式1は北京時間を基準としており、中国国内または東八区での時間計算に適しています。簡便ですが、汎用性は限られます。
- 公式2は世界的な基準であるUTCに基づいており、世界中のタイムゾーンの問題を扱うのに適しています。汎用性が高いです。異なる国やタイムゾーンの時間を扱う場合、この公式が適しています。計算方法としてこの公式を採用します。
真太陽時の計算手順
- 地方平均太陽時(Local Mean Solar Time, LMST)の計算: 地方平均太陽時は、地球の自転の平均速度に基づく平均太陽時であり、標準時を経度で単純に補正したものです。
公式: LMST = UTC + (現地経度/15) - タイムゾーンオフセット
-
UTC:協定世界時
-
現地経度:度単位。東経は正、西経は負。
-
タイムゾーンオフセット:時間単位。東のタイムゾーンは正、西は負。
-
均時差(EoT)の計算: 均時差は、真太陽時と地方平均太陽時の差を反映します。これは主に地球軌道の離心率と地軸の傾きに起因します。均時差は日付によって変化し、近似式で計算できます。
近似式: EoT = 9.87 * sin(2B) - 7.53 * cos(B) - 1.5 * sin(B)
ここで、B = 360 * (n - 81) / 365
-
n:年の通算日(1月1日を1、12月31日を365または366とする)。
-
EoTの単位は分。
-
真太陽時の計算: 均時差を地方平均太陽時に加えて真太陽時を得ます。
公式: TST = LMST + EoT/60
ここで、EoTは時間に変換する必要があります。
詳細手順:
北京の真太陽時を計算すると仮定します。協定世界時(UTC)を12:00、日付を2024年10月6日とします。
- 地方平均太陽時(LMST):
- 北京の経度は約116.4度。
- 北京のタイムゾーンはUTC+8。
LMST = UTC + (現地経度 / 15) - タイムゾーンオフセット LMST = 12:00 + (116.4 / 15) - 8 = 12:00 + 7.76 - 8 = 11:46
-
均時差(EoT)の計算:
-
日付を2024年10月6日とすると、通算日は280日。
B = 360 * (280 - 81) / 365 = 360 * 199 / 365 ≈ 196.38度 -
均時差の式に代入:
EoT = 9.87 * sin(2 * 196.38) - 7.53 * cos(196.38) - 1.5 * sin(196.38)計算すると、EoT ≈ -10.5分 -
真太陽時(TST):
TST = LMST + EoT/60 TST = 11:46 - 10.5/60 = 11:35:30
コード例(JavaScript)
JavaScriptなどの言語を使用して真太陽時の計算を実装できます。以下は簡単な例です(dayjsのプラグインを使用)。
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';
import dayOfYear from 'dayjs/plugin/dayOfYear';
dayjs.extend(utc);
dayjs.extend(timezone);
dayjs.extend(dayOfYear);
/**
* 真太陽時を計算(現地時間表示で返す)
* @param {string|Date} date 入力の「現地標準時」の時刻(例:'2024-10-06 12:00:00'、タイムゾーンはtimezoneStrで指定)
* @param {number} longitude 経度(東経は正、西経は負)、例:北京 116.4
* @param {string} timezoneStr IANAタイムゾーン名、例:'Asia/Shanghai'
* @param {number} tzOffsetHours タイムゾーンオフセット(時間)、例:東八区=8
*/
function calculateTrueSolarTimeLocal(date, longitude, timezoneStr, tzOffsetHours) {
// 1) 現地標準時 LST
const lst = dayjs.tz(date, timezoneStr);
// 2) 標準経度 LSTM = 15 * タイムゾーン
const LSTM = 15 * tzOffsetHours;
// 3) 地方平均太陽時 LMST(現地タイムゾーンの「時計時間」で表示)
const deltaHours = (longitude - LSTM) / 15; // 時間
const lmst = lst.add(deltaHours, 'hour');
// 4) 均時差 EoT(分)
const n = lmst.dayOfYear(); // 年の通算日(現地日付でnを取得すれば十分)
const Bdeg = (360 * (n - 81)) / 365;
const Brad = (Math.PI / 180) * Bdeg;
const EoT = 9.87 * Math.sin(2 * Brad) - 7.53 * Math.cos(Brad) - 1.5 * Math.sin(Brad); // 分
// 5) 真太陽時 TST(現地の時計時間で表示)
const tst = lmst.add(EoT, 'minute');
return tst.format('YYYY-MM-DD HH:mm:ss');
}
// 例:2024-10-06 12:00(現地標準時)、北京 116.4°E、東八区
const result = calculateTrueSolarTimeLocal('2024-10-06 12:00:00', 116.4, 'Asia/Shanghai', 8);
console.log(result);
まとめ
- 真太陽時は太陽の位置に基づいて計算される時間であり、平均太陽時(地方時)とは偏差があります。
- **均時差(EoT)**は真太陽時と平均太陽時の差を計算する鍵です。
- 地理経度と協定世界時を用いて、コードで真太陽時を計算できます。