要推算 UTC 時差,請用對應的當地日期和時間減去 UTC 日期和時間,並保留日期變化。在 Mac 版 Numbers 中,無須選擇具名時區,就能以分鐘為單位計算時差。

本指南適用於要核對出版時間戳記與其 UTC 對應值的人。以下所有出版日期皆為合成資料。任務是找出該出版時刻的時差,並記錄證據所能支持的結論。

計算前需要哪些資訊?

你需要同一出版時刻的兩種表示方式:完整的當地日期和時間,以及完整的 UTC 日期和時間。確認兩者描述的都是出版時間,而不是一個描述出版時間、另一個描述較晚的編輯時間。兩者之間的關聯是計算的前提;看似合理的數值差異無法證明它們彼此對應。

請將以下四個概念分開看待:

概念 合成範例 表示的資訊
民用日期 2026-07-01 日曆日期,不含時間或與 UTC 的關係
當地日期和時間 2026-07-01 05:25:00 日曆和時鐘欄位,仍需時差或時區才能識別某個時刻
時刻 2026-06-30T23:40:00Z 以 UTC 表示的特定時刻
UTC 時差 +05:45 該時刻當地時鐘與 UTC 的差值
具名時區 提供的 IANA 時區識別碼 用來判定不同時刻時差的一組規則

Apple 在 Foundation 中也有類似區分:Date 表示不依附於日曆或時區的時間點,而 DateComponents 表示須搭配日曆和時區解讀的日曆欄位。因此,顯示的日期字串和某個時刻是不同類型的輸入。Apple:日期與時間

本工作表請使用有效的格里曆日期,以及從 00 到 59 的整秒值。計算時也請保留原始時間戳記字串。如果任一來源只提供日期,或只提供沒有日期的時間,請先取得缺少的資訊,再計算精確時差。

時差如何計算?

RFC 3339 將正負號定義為當地時間減去 UTC。結果為正,表示當地時鐘較 UTC 快;結果為負,表示較慢。從當地日期和時間減去時差,即可還原 UTC。RFC 3339,第 4.2 節

第一組合成出版資料的成對值如下:

  • UTC:2026-06-30T23:40:00Z
  • 當地時間:2026-07-01 05:25:00
  • 差值:正 5 小時 45 分鐘
  • 推算出的時差:+05:45

當地日期晚了一天。若只計算時鐘時間,會得到誤導性的負差值。以下以分鐘明確計算,說明日期為何重要:

offset_minutes = 1440 × calendar_day_difference
                 + local_clock_minutes
                 - UTC_clock_minutes

calendar_day_difference = +1
local_clock_minutes = 5 × 60 + 25 = 325
UTC_clock_minutes = 23 × 60 + 40 = 1420

offset_minutes = 1440 + 325 - 1420 = 345
345 minutes = 5 hours 45 minutes

此處的日期差是完整日期之間的差值。不要只用日期中的日數相減:7 月 1 日減去 6 月 30 日是一天,即使 1 - 30 是負數也一樣。以下工作表會用日期運算處理跨月情況。

如何在 Mac 版 Numbers 中計算?

你需要安裝 Numbers,並準備包含一個表格的試算表。範例使用英文函數名稱和逗號分隔符號。如果公式編輯器要求使用不同的分隔符號,請透過「函數瀏覽器」插入函數,並填入其引數欄位。

1. 建立清楚標示的欄位

第 1 列使用以下標籤:A1 填入 UTC 欄位,B1 填入 當地欄位,C1 填入 時差分鐘,D1 填入 還原的 UTC。這些標籤描述你的輸入;在 A 欄輸入日期本身並不會進行時區轉換。

選取 A 欄和 B 欄,然後使用「格式」側邊欄、「儲存格」分頁和「資料格式」選單,選擇「日期與時間」。選擇能顯示完整日期和時間(包括秒)的格式。Apple 在其 Numbers 儲存格格式指南中說明了這些控制項。

2. 明確建立兩個值

按一下 A2,輸入以下公式,然後按 Return 確認:

=DATE(2026,6,30)+DURATION(0,0,23,40,0,0)

在 B2 輸入:

=DATE(2026,7,1)+DURATION(0,0,5,25,0,0)

DATE 將年、月、日分別作為數字輸入,避免日期字串產生歧義。DURATION 依序接受週、日、小時、分鐘、秒和毫秒。此處將時間長度加到各日期上,以提供時鐘時間。Apple:DATE、Apple:DURATION

確認 A2 顯示 6 月 30 日 23:40:00,而 B2 顯示 7 月 1 日 05:25:00。你正在表示兩組要相減的日曆欄位。請在來源備註中保留原始 UTC 後綴,不要依靠試算表儲存格的顯示方式來判斷它是否為 UTC。

3. 計算當地時間減去 UTC

在 C2 輸入:

=DUR2MINUTES(B2-A2)

預期結果為 345。相減日期/時間值會產生時間長度,而 DUR2MINUTES 會將其表示為分鐘數。如有需要,請將 C2 的「資料格式」設為「數字」。Apple:DUR2MINUTES

若要輸入或檢查公式,請選取儲存格並輸入 =;Numbers 會開啟「公式編輯器」。如果公式顯示錯誤,請先按一下錯誤指示符號,讀取說明再繼續。Apple:在 Mac 版 Numbers 中使用表格儲存格中的資料計算數值

4. 記錄正負時差並檢查結果

將分鐘數的絕對值換算成整小時和剩餘分鐘數。對於 345,結果是 5 小時 45 分鐘。由於結果為正,請記錄為 +05:45。若結果為 -210,則應寫成 -03:30;正負號適用於整個時差。

在 D2 輸入反向計算:

=B2-DURATION(0,0,0,C2,0,0)

將 D2 設為「日期與時間」格式,並顯示日期和時間。它應該顯示與 A2 相同的日期和時間。這可檢查計算方向和還原結果,但不能獨立證明原始輸入描述的是同一則出版內容。

哪些範例能找出日期和正負號的錯誤?

使用以下合成資料配對檢查你的解讀。每新增一列,請以 DATE 加上 DURATION 建立 A 和 B,然後在相減公式中使用該列的儲存格參照。

UTC 出版時間戳記 對應的當地欄位 時差分鐘 時差
2026-06-30T23:40:00Z 2026-07-01 05:25:00 345 +05:45
2026-07-01T02:15:00Z 2026-06-30 22:45:00 -210 -03:30
2026-08-31T23:30:00Z 2026-09-01 01:30:00 120 +02:00

第二組資料跨回前一天的當地日期。第三組則以整小時時差跨越月份邊界。這些例子有助於找出相減順序顛倒、漏掉日期,以及假設時差只能以整小時計算等問題。

請保留足夠的小數位數,以便看出是否有不足一分鐘的結果。對於這些整秒輸入,若出現意料之外的小數,應該查明原因:檢查秒數、輸入精度,以及記錄是否確實相互對應。不要只為了得到熟悉的時差而將其四捨五入。RFC 3339 的數字時差精確到分鐘,因此含秒數的差異無法只靠附加 HH:MM 時差來忠實表示。RFC 3339,第 4.2 節

為什麼無法推斷唯一的具名時區?

時差描述的是某一時刻的時間關係。具名時區則提供用來判定其他時刻時間關係的規則。RFC 9557 明確區分這些概念,並說明僅靠時差不足以進行當地日曆運算,例如找出一天後的相同當地時間。因此,時差相符並不能證明某個具名時區是唯一答案。RFC 9557:時區定義

請將結果記錄為「推算的出版時差:+05:45;具名時區:未知。」如果之後從來源取得時區識別碼,請另外保留。更多成對的出版資料可以揭露更多時差,但若要選定時區,還需要超出比對相符項目的證據。

Apple 的 API 採用相同的計算方向。TimeZone.secondsFromGMT(for:) 接受既有時區和日期,計算該日期的時差。其日期引數預設為目前日期,因此若要檢查出版時間,必須提供出版時刻。此方法不能接受時差並回傳原始具名時區。Apple:secondsFromGMT(for:)

什麼時候應該停止並取得更完整的輸入?

接受結果前,請依照以下順序判斷:

  1. **只有民用日期:**取得時鐘時間和 UTC 參照。單靠日期無法識別某個時刻。
  2. **UTC 參照帶有非零數字時差:**使用本工作表前,先依照其標示的時差換算成 UTC。
  3. **兩個輸入都已換算為時刻:**保留或取回原始當地欄位。標準化後相減同一時刻的兩種表示方式,結果會是零。
  4. **顯示日期時,差值有所變化:**檢查完整儲存值。隱藏的日期仍是計算的一部分。
  5. **計算可行,但配對關係不確定:**在確認出版關聯之前,將其保留為候選差值。

Numbers 可能會悄悄補上缺少的欄位:Apple 指出,只輸入時間時會加上今天的日期。隱藏日期或時間只會改變顯示方式,值本身仍可供計算使用。若儲存格的可見內容有任何不清楚之處,請檢查「智慧型儲存格檢視」。Apple:在 Mac 版 Numbers 中設定日期、貨幣等格式

此外,以 Z 結尾的 UTC 時間戳記可確定 UTC 時刻,但無法確定原始當地時區。RFC 9557 更新了 RFC 3339 對 Z 的處理方式,以容納未知的當地時差。因此,推算時不可缺少另一組當地時間表示方式。RFC 9557,第 2.2 節

完成出版時間核對後,請保留原始配對、帶正負號的時差,以及兩個值代表同一時刻的依據。如此便能得到可重現的結果;若證據無法辨識具名時區,就讓它保持未知。

來源