# 預言計時器：事件時間與計時規格

文件日期：2026/10/20（Asia/Taipei）  
更新日期：2026/10/21（Asia/Taipei）；第 06、11 項改為首次接觸日與人類首次登月。  
狀態：依討論確認的第一版規格；本文件不包含網頁實作。

## 1. 專案目的

以同一個網頁呈現天文事件、歷史事件、預言與期限距離現在的時間。事件保留中英文名稱。

- 單次事件尚未發生：顯示 `-DDDDD:HH:mm:ss`，剩餘時間逐漸接近零。
- 單次事件已經過去：顯示 `+DDDDD:HH:mm:ss`，經過時間持續增加。
- 有下一次的事件：到達目標時，改為倒數下一次事件，不持續累加本次事件的經過時間。
- 年積日為例外：顯示 UTC 年內的日期序號與當天時間，固定帶 `+` 號。

`DDDDD` 為至少五位的天數；`HH` 為 00–23，`mm`、`ss` 為 00–59。一般時間差的一天定義為 24 小時，不是某地曆法上的一天。天數超過五位時自然增加位數，不截斷。

## 2. 時區與資料精度的共同原則

每個事件同時保留「原本選定時區的時間」與「換算後的 UTC 時間」。原本就選用 UTC 的事件，兩者相同，不另行創造當地時間。

資料分成三類：

1. 有時刻的事件資料：例如展覽結束、發射時間或公告貼文時間。
2. 天文預報：逐次取得事件時刻，保留資料來源、時間尺度與精度。
3. 專案約定基準：原始資訊只有日期、年份或約略時刻，由本專案指定時分秒與時區。畫面可每秒更新，但不代表原始資料精確到秒。

歷史事件在 UTC 制度建立之前的「UTC」是方便電腦比較的回推表示或展示約定，不代表當時已採用 UTC。哈雷彗星的固定 CET 與航海家資料的 UT 採用方式，另於各節說明。

除特別約定固定偏移的事件外，地區時間保留 IANA 時區名稱，例如 `Asia/Taipei`、`Europe/Brussels`、`America/New_York`、`America/Guatemala`。未來時區法律若改變，需重新檢查相關目標時間。本版一般秒差採網頁常用的 Unix／POSIX 時間，不另外累計歷史閏秒。

## 3. 事件規格

### 01. 小行星貝努潛在撞擊地球日

英文：Asteroid Bennu Potential Impact Date

- 原本選定時間：**2182/09/24 00:00:00 UTC（UTC+00:00）**。
- UTC 時間：**2182/09/24 00:00:00 UTC**。
- 行為：單次事件；歸零後轉正數累加。
- 選用理由：NASA 的軌道風險研究列出 2182/09/24 這個潛在撞擊日期。本專案選定該日 UTC 零時，將只有日期的資訊轉成可計時的基準。
- 精度與意義：日期有來源；00:00:00 是專案約定，不是預測撞擊時刻。倒數歸零不代表撞擊必然發生。
- 來源：[NASA：Bennu 未來軌道研究](https://www.nasa.gov/news-release/nasa-spacecraft-provides-insight-into-asteroid-bennus-future-orbit/)。

### 02. 下一次日全食

英文：Next Total Solar Eclipse

- 原本選定時間：每次日全食的**全球食甚時刻**，以全球天文時間基準選取，不指定觀測城市。
- 文件日期所對應的下一次：**2027/08/02 10:06:37.7 UT**，依本次採用的 NASA 路徑表。
- UTC 時間：demo 暫採 **2027/08/02 10:06:38 UTC（近似、取整秒）**。
- 行為：依日全食事件清單接續倒數；抵達本次全球食甚後，切換到下一次日全食。
- 選用理由：不同觀測地的食甚時間不同。採全球食甚可提供全世界觀眾共同的計時目標，無須先決定觀測地，也不代表台灣能看見日全食。
- 精度與意義：NASA 該頁使用 UT。此處以 UT1 與 UTC 在民用計時尺度下的近似關係作為 demo 基準，並取至整秒，不宣稱是精確測定的未來 UTC。其他星曆版本可能有數秒差異，實作須固定來源版本。NASA 有些總表列的是 TD／TT，不能把那個數字直接當 UTC。
- 維護：以上是截至 2026/10/20 的下一次事件範例，不是永久固定目標；清單只納入日全食，本版不將日環食或混合食自動算入。
- 來源：[NASA：2027/08/02 日全食路徑與全球食甚](https://eclipse.gsfc.nasa.gov/SEpath/SEpath2001/SE2027Aug02Tpath.html)、[NASA：未來日食](https://science.nasa.gov/eclipses/future-eclipses/)。

### 03. 下一次滿月

英文：Next Full Moon

- 原本選定時間：**UTC 的天文滿月時刻**，不依觀眾所在地的午夜或月出時間計算。
- 文件日期所對應的下一次：**2026/10/26 04:12 UTC（UTC+00:00）**。
- UTC 時間：**2026/10/26 04:12:00 UTC**；末尾 `00` 為分鐘精度資料的展示補值。
- 行為：抵達本次滿月時刻後，切換到下一次滿月。
- 選用理由：天文滿月是全球共用的事件時刻，適合統一倒數。使用逐次月相資料，不以固定 29.5 天推算下一次，以免累積誤差。
- 精度與意義：本次 USNO 表列至分鐘，畫面顯示秒數不代表來源精確到秒。下一次事件同樣須取自月相清單。
- 來源：[美國海軍天文台：2026 年 10 月起月相表](https://aa.usno.navy.mil/calculated/moon/phases?date=2026-10-01&format=p&nump=6)。

### 04. Unix 時間溢位

英文：Unix Time Overflow

- 原本選定時間：**2038/01/19 03:14:08 UTC（UTC+00:00）**。
- UTC 時間：**2038/01/19 03:14:08 UTC**。
- 行為：單次事件；歸零後轉正數累加。
- 選用理由：有號 32 位元整數最多能表示 2,147,483,647。把它用來儲存自 1970/01/01 00:00:00 UTC 起的 Unix 秒數，最後可表示的時刻是 2038/01/19 03:14:07 UTC；本專案選的是下一秒，也就是首次超出範圍的時間。
- 精度與意義：本事件特指「有號 32 位元 Unix 秒數溢位」。使用較寬時間格式的系統不會因這項限制失效；64 位元電腦上的舊程式仍可能使用 32 位元時間。這不是全球電腦同時停止運作的時刻。
- 來源：[Linux time(2) 手冊](https://www.man7.org/linux/man-pages/man2/time.2.html)。

### 05. 庫茲韋爾的技術奇點預測

英文：Kurzweil's Singularity Prediction

- 原本選定時間：**2045/01/01 00:00:00 UTC（UTC+00:00）**。
- UTC 時間：**2045/01/01 00:00:00 UTC**。
- 行為：單次事件；歸零後轉正數累加。
- 選用理由：庫茲韋爾將技術奇點的預測年份設定為 2045 年。本專案依討論選擇 2045 年第一個 UTC 瞬間作為展示基準。
- 精度與意義：年份有預測來源；1 月 1 日及零時是專案約定。跨過零點只代表越過約定基準，不代表奇點已被證實發生。
- 來源：[Kurzweil Library：A singularity q + a](https://www.writingsbyraykurzweil.com/a-singularity-q-a)。

### 06. 星際爭霸戰首次接觸日

英文：Star Trek First Contact Day

- 原本選定時間：**2063/04/05 11:00:00 UTC（UTC+00:00）**。
- UTC 時間：**2063/04/05 11:00:00 UTC**。
- 參考換算：台灣時間 `Asia/Taipei`（UTC+08:00）為 **2063/04/05 19:00:00**。
- 行為：單次科幻設定日期；歸零後轉正數累加，不按每年紀念日重設。
- 選用理由：Star Trek 官方介紹確認人類與瓦肯人首次接觸的劇情日期為 2063/04/05。使用者選擇以 UTC 統一展示，並指定該日 11:00 作為計時點，讓不同地區的觀眾倒數到同一個瞬間。
- 精度與意義：2063/04/05 為作品日期設定；11:00、分秒 00 與 UTC 時區均為使用者選定的專案展示約定，不宣稱是電影中鳳凰號升空、瓦肯人降落或首次會面的精確 UTC 時刻，也不代表已查證的影迷社群共識。此時刻不依美國當地時區換算，因此不受美國夏令時間規則變更影響。
- 來源：[Star Trek 官方：Origin Of First Contact Day Explained（劇情日期）](https://www.startrek.com/en-un/news/origin-of-first-contact-day-explained)；11:00:00 UTC 為使用者確認的展示基準。

### 07. 歐盟淨零排放期限

英文：EU Net-Zero Deadline

- 原本選定時間：**2050/01/01 00:00:00，布魯塞爾時間 `Europe/Brussels`**；依目前冬季規則為 CET，UTC+01:00。
- UTC 時間：**2049/12/31 23:00:00 UTC**。
- 行為：單次事件；歸零後轉正數累加。
- 選用理由：歐盟氣候目標以 2050 年達成氣候中和為基準。歐盟沒有單一成員國共用時區，本專案選擇布魯塞爾作代表地區，並依討論採 2050 年年初零時。
- 精度與意義：2050 年是官方目標；布魯塞爾、1 月 1 日與零時是展示約定，不宣稱法規明訂於該秒截止。此事件使用地區時區規則；若未來布魯塞爾時區制度變更，需重新核對 UTC 換算。
- 來源：[歐盟理事會：European climate law](https://www.consilium.europa.eu/en/press/press-releases/2021/06/28/council-adopts-european-climate-law/)。

### 08. 展覽結束

英文：Exhibition Ends

- 原本選定時間：**2027/09/12 18:00:00，台灣時間 `Asia/Taipei`（UTC+08:00）**。
- UTC 時間：**2027/09/12 10:00:00 UTC**。
- 行為：單次事件；歸零後轉正數累加。
- 選用理由：使用者提供的實際展覽結束時間。依展覽所在地的台灣時間設定，海外觀眾也倒數到同一瞬間。
- 精度與意義：明確的使用者指定時間；18:00 以 18:00:00 作為計時點。
- 來源：本專案使用者提供並確認。

### 09. 航海家一號發射

英文：Voyager 1 Launch

- 原本選定時間：**1977/09/05 12:56:01 UT**，沿用 NASA 任務頁的記載，不改採發射地當地鐘錶時間。
- UTC 時間：本專案採 **1977/09/05 12:56:01 UTC** 作為民用計時表示。
- 行為：單次歷史事件；持續正數累加。
- 選用理由：NASA 任務頁直接列出含秒數的發射時刻，適合以發射瞬間計算經過時間。
- 精度與意義：來源標為 UT。本專案在整秒民用展示上沿用其數字作 UTC 基準，不宣稱另行完成了 UT1 與 UTC 的亞秒級轉換。
- 來源：[NASA：Voyager 1](https://science.nasa.gov/mission/voyager/voyager-1/)。

### 10. 哈雷彗星預測回歸獲證實

英文：Halley's Comet Predicted Return Confirmed

- 原本選定時間：**1758/12/25 18:00:00，德國時間；本專案明確約定為固定 CET（UTC+01:00）**。
- UTC 時間：**1758/12/25 17:00:00 UTC**。
- 行為：單次歷史事件；持續正數累加，不在每次哈雷彗星回歸時重設。
- 選用理由：Palitzsch 於 1758/12/25 重新觀測到哈雷彗星，成為預測回歸獲得觀測支持的歷史節點。後來文獻轉引他的觀測敘述，提到當日晚上 6 點；使用者因此選擇德國時間 18:00:00。
- 精度與意義：所採來源是 1956 年文獻對《Dresdnische gelehrte Anzeigen》1759 年第 2 期、第 17 頁的轉引；本次未直接核對原刊掃描。史料時刻約到小時。固定 CET 的採用是已確認的展示約定，不是對 1758 年當地地方時的精確重建；不可直接套用 `Europe/Berlin` 的歷史時區偏移，否則會與本規格的固定 UTC+01:00 不一致。18:00:00 中的分秒為約定補值。
- 天數說明：以 1758/12/25 與 2026/10/20 的 UTC 零時日期差為例，是 97,819 天，五位天數目前足夠；採本節 17:00 UTC 時刻計算時，完整經過天數還會受當下時分秒影響。
- 來源：[1956 年《Natur und Heimat》轉引觀測敘述](https://www.hs-nb.de/storages/hs-neubrandenburg/institute/iugr/Zeitschriften/PDF-Scans/Zentral/Natur_und_Heimat/Heft_4__1956_.pdf)、[德勒斯登聖母教堂地方歷史介紹](https://www.frauenkirche.de/sehenswuerdigkeiten.html)。

### 11. 人類首次登月

英文：First Human Moon Landing

- 原本選定時間：**1969/07/20 20:17:40 GMT**，沿用 NASA 報告表列的登月艙著陸時刻。
- UTC 時間：本專案採 **1969/07/20 20:17:40 UTC** 作為整秒民用展示基準。
- 參考換算：台灣時間 `Asia/Taipei`（當日 UTC+08:00）為 **1969/07/21 04:17:40**；原選定基準仍為 NASA 表列的 GMT 時刻。
- 行為：單次歷史事件；持續正數累加。
- 選用理由：NASA《Apollo Program Summary Report》表 A-V（Lunar Surface Operations）列出阿波羅 11 號於 1969/07/20 20:17:40 GMT 著陸。本專案以首次載人登月艙著陸為人類首次登月的計時起點。
- 精度與意義：來源表列至整秒。本專案在整秒展示上沿用 GMT 的數字作 UTC 基準，不宣稱完成歷史時間尺度的亞秒級換算，也不將此時刻混同為阿姆斯壯稍後踏上月面的第一步。
- 來源：[NASA：Apollo Program Summary Report（1975），表 A-V](https://ntrs.nasa.gov/citations/19750013242)、[報告 PDF](https://ntrs.nasa.gov/api/citations/19750013242/downloads/19750013242.pdf)。

### 12. 千禧蟲危機

英文：Y2K Crisis

- 原本選定時間：**2000/01/01 00:00:00 UTC（UTC+00:00）**。
- UTC 時間：**2000/01/01 00:00:00 UTC**。
- 行為：單次歷史紀念基準；持續正數累加。
- 選用理由：千禧蟲問題涉及不同地區、系統的日期跨年，沒有單一全球同時發生的危機瞬間。本專案選用 UTC 跨年作共同紀念點，也方便與 Unix 時間溢位事件比較。
- 精度與意義：這是使用者同意的專案紀念基準，不主張所有受影響的電腦都在這個瞬間出現問題。
- 來源：本專案討論後的約定。

### 13. ChatGPT 發布

英文：ChatGPT Launch

- 原本選定時間：**2022/11/30 18:02:06 UTC（UTC+00:00）**，以 OpenAI 官方帳號公告貼文的時間戳推算值為基準。
- UTC 時間：**2022/11/30 18:02:06 UTC**。
- 參考換算：美國太平洋標準時間 PST（UTC−08:00）為 **2022/11/30 10:02:06**；台灣時間為 **2022/12/01 02:02:06**。原選定基準仍為 UTC。
- 行為：單次歷史事件；持續正數累加。
- 選用理由：官方產品公告確認發布日期為 2022/11/30，但沒有列出時分秒。使用者最終選擇 OpenAI 官方帳號的公告貼文，作為可辨識、可追溯的發布紀念點，未採 Sam Altman 稍後發出的另一則推文。
- 精度與意義：公告貼文 ID 為 `1598014522098208769`。依 Twitter Snowflake 格式計算，ID 內嵌時間為 **2022/11/30 18:02:06.399 UTC**；本專案取整秒部分 **18:02:06**。這是 ID 時間戳推算，不是網站正式開放服務瞬間的直接紀錄；原貼文頁於本次查證時未能直接載入核對。
- 推算方式：`Unix 毫秒 = (貼文 ID >> 22) + 1288834974657`，需使用可精確處理大型整數的型別。
- 來源：[OpenAI 官方產品公告](https://openai.com/index/chatgpt/)、[OpenAI 官方帳號公告貼文](https://x.com/OpenAI/status/1598014522098208769)、[Twitter 原始 Snowflake 實作](https://github.com/twitter-archive/snowflake/blob/b3f6a3c6ca8e1b6847baa6ff42bf72201e2c2231/src/main/scala/com/twitter/service/snowflake/IdWorker.scala)。

### 14. 首台通用電子電腦問世

英文：First General-Purpose Electronic Computer Debut

- 原本選定時間：**1946/02/15 18:30:00，費城時間 `America/New_York`；當日為 EST（UTC−05:00）**。
- UTC 時間：**1946/02/15 23:30:00 UTC**。
- 行為：單次歷史事件；持續正數累加。
- 選用理由：《ENIAC in Action: Making and Remaking the Modern Computer》註釋提到邀請函所列的開始時間為下午 6:30。依討論採正式晚宴與揭幕典禮的開始時間，作為「正式亮相」的明確紀念節點。
- 精度與意義：當日上午與下午也有非正式展示及技術討論，因此 18:30 不代表 ENIAC 第一次運作或第一次被觀看。秒數 00 是對分鐘精度記載的補值；UTC 為歷史時間的回推表示。
- 來源：[MIT Press 書籍介紹](https://mitpress.mit.edu/9780262535175/eniac-in-action/)、[書籍可搜尋全文](https://pdfarchive.kunaldawn.com/archive/computer_engineering/ENIAC_in_Action_-_Thomas_Haigh.pdf)。

### 15. 馬雅末日預言

英文：Maya Doomsday Prophecy

- 原本選定時間：**2012/12/21 00:00:00，瓜地馬拉時間 `America/Guatemala`（UTC−06:00）**。
- UTC 時間：**2012/12/21 06:00:00 UTC**。
- 行為：單次文化事件紀念基準；持續正數累加。
- 選用理由：使用者最終確認日期為 2012/12/21，並採瓜地馬拉作為馬雅文化區域的代表地點，以該地當日零時開始計算。
- 精度與意義：馬雅文化區域跨越多個現代國家，沒有單一「馬雅文明時區」；瓜地馬拉與零時都是本專案選擇。這個事件指與該日有關的末日傳說與文化現象，不宣稱馬雅曆本身預言世界毀滅。
- 來源：[史密森尼：The Meaning of 2012](https://maya.nmai.si.edu/2012-resetting-count/meaning-of-2012)、[史密森尼：The Maya World](https://maya.nmai.si.edu/the-maya/maya-world)。

### 16. 年積日

英文：Day of Year

分類：循環事件；與下一次日全食、下一次滿月一同列入網站的「循環事件」篩選，每年 UTC 跨年重設。

- 原本選定時間基準：**UTC（UTC+00:00）當前年份與日期**。
- UTC 時間基準：**相同，皆使用 UTC**；每年 **01/01 00:00:00 UTC** 重設年積日。
- 顯示格式：**`+DDDDD:HH:mm:ss`**，固定使用 `+` 號。例如 **2026/10/20 12:34:56 UTC** 顯示 **`+00293:12:34:56`**。
- 行為：標準年積日從 1 起算，1 月 1 日為 `00001`；平年最後一天為 `00365`，閏年為 `00366`。時分秒表示當天 UTC 時間，每逢 UTC 午夜進入下一個年積日。
- 選用理由：使用者選擇標準年積日，而非「從年初起已經過多少個完整的 24 小時」。採 UTC 可讓全球觀眾看到相同日期序號。
- 邊界例子：**2027/01/01 00:00:00 UTC** 顯示 **`+00001:00:00:00`**；不得顯示成 `00000`，也不需要倒數至隔年。
- 來源：使用者確認的顯示規則與公曆年積日定義。

## 4. 第一版 demo 的實作約束

1. 每次畫面更新都重新計算「現在時間與目標時間之差」，不以每秒加減 1 的方式維持狀態，以免背景分頁暫停後累積誤差。
2. 單次事件依實際時間差決定正負號；歸零後保留同一目標時刻，繼續正數累加。整秒顯示的取整方式需在實作時統一。
3. 日全食與滿月使用依時間排序的事件清單。到達本次目標後直接挑選下一個未來事件；重開網頁或裝置休眠後，也應跳至當下真正的下一次事件。
4. 若循環清單耗盡，顯示需要更新資料，不以固定週期臆造天文事件。
5. 所有計時器使用同一個現在時間基準。demo 可先使用裝置時鐘；顯示到秒不表示裝置已與標準時間精確同步。
6. 每個事件保留來源、原時區、UTC 基準及精度註記，區分可查證的時刻與展示約定。預言或期限跨過零點，只表示跨越選定的時間，不自動判斷事件是否實現。
7. 年積日獨立計算，不套用一般正負時間差公式；顯示時固定加上 `+` 號，跨年仍維持 `+` 號。
8. 本文件中的「下一次」以文件日期 2026/10/20 為參考；實際網頁必須隨當前時間選取下一筆。

## 5. 尚待實作階段處理的資料工作

已確認的事件設定不需重新選擇。製作 demo 時，仍須準備涵蓋展示期間的日全食與滿月清單，統一天文資料來源版本，並驗證歸零、切換、跨年與時區換算。這些屬於資料整理與實作驗證，不改變本文件記錄的選時理由。
