日期和數字格式

本文說明如何定義新的日期和數字格式模式,並加入 API 要求。

你可以透過日期時間和數字格式,控制資料在工作表中的顯示方式。Google 試算表提供了一些可選用的常見格式,但您也可以自行定義格式。

在試算表 UI 中,您可以依序點選「格式」 >「數字」選單,將數字和日期格式套用至儲存格。在 Google Sheets API 中,您可以使用 spreadsheets.batchUpdate 方法呼叫來設定這些格式,以傳送 UpdateCellsRequest 或 RepeatCellRequest。在要求中,您可以指定 NumberFormatType (例如 NUMBER、CURRENCY、PERCENT、DATE 或 TIME) 和選用的 pattern 字串,藉此設定 NumberFormat 物件。如果省略 pattern,試算表會根據試算表的 locale,為指定的 type 使用預設格式模式 (例如 en_US 中的 CURRENCY 為 $1,000.12)。

為範圍設定自訂日期時間或十進位格式範例說明如何使用 Sheets API 設定格式模式。請注意,格式的實際顯示方式取決於試算表的 locale。本文假設 locale 為 en_US。如要判斷試算表的 locale,請使用 spreadsheets 資源的 spreadsheets.get 方法,讀取 SpreadsheetProperties 物件。

如需更多範例,請參閱「基本格式設定」和「條件式格式設定」。

關於日期和時間值

與大多數其他試算表應用程式一樣,Google 試算表會將日期和時間值視為十進位值。這樣一來,您就能在公式中對這些值執行算術運算,例如增加天數或週數、加減兩個日期和時間,以及執行其他類似運算。

試算表會使用試算表常用的紀元日期格式。值的整數部分 (小數點左側) 會從 1899 年 12 月 30 日起開始計算日期。小數部分 (小數點右側) 則代表一天中的時間。舉例來說,1900 年 1 月 1 日中午是 2.5、2,因為這是 1899 年 12 月 30 日之後的 2 天,而 0.5 是因為中午是半天。1900 年 2 月 1 日下午 3 點是 33.625。

Google 試算表會正確地將 1900 年視為平年,而非閏年。日期和時間序號不會儲存時區偏移值。而是根據試算表的 timeZone,您可以使用 spreadsheets.get 方法從 SpreadsheetProperties 物件讀取。

日期和時間格式模式

日期時間格式模式是一串符記子字串,Google 試算表在剖析時會將其替換為對應的日期時間元素 (例如月份或小時)。

日期和時間格式權杖

下表定義了可用於日期時間格式模式的權杖子字串。+ 字元表示前一個字元可以出現一或多次,且仍符合模式。試算表會將未列於本表中的字元視為常值,並直接輸出,不進行任何變更。

權杖 說明
h 當日時段。根據字串中是否有上午或下午指標,切換 12 小時和 24 小時格式。
hh+ 與前一項相同,但 1 到 9 前面會加上 0。
m 如果前一個非文字符記是小時,或後一個非文字符記是秒,則代表小時中的分鐘 (不含前置 0)。否則,系統會以數字表示月份 (不含前置 0)。
M 月份,前方不加 0。請使用這個權杖,在模式中明確指定月份,而非分鐘。
mm 與 m 相同,但兩種情況都會在前面加上 0。
MM 月份,前方加 0。請使用這個權杖,在模式中明確指定月份,而非分鐘。
mmm 月份的三個字母縮寫 (例如「Feb」)。
mmmm 月份全名。mmmmmm+ 也符合這項條件。
mmmmm 月份的第一個字母 (例如「J」代表 June)。
s 一分鐘內的第幾秒,前方不加 0。
ss 一分鐘內的第幾秒,前方加 0。
[h+] 一段時間內經過的小時數。字母數量代表最少位數 (會加上前置 0)。
[m+] 時間長度內經過的分鐘數。字母數量代表最少位數 (會加上前置 0)。
[s+] 時間長度中經過的秒數。字母數量代表最少位數 (會加上前置 0)。
d 日期,小於 10 的數字前不加 0。
dd 日期,小於 10 的數字前方會加上 0。
ddd 星期幾,三個字母的縮寫 (例如「Mon」)。
dddd+ 星期幾,全名。
y 2 位數年份。
yy
yyy 4 位數的年份。
yyyy+
a/p 上午顯示「a」,下午顯示「p」。此外,小時也會變更為 12 小時制。如果符記字母為大寫,輸出內容也會是大寫。
am/pm 與上述相同,但會顯示「AM」或「PM」,且一律大寫。
0 十分之一秒。您可以使用 00 將精確度提高至兩位數,或使用 000 將精確度提高至三位數 (毫秒)。
\ 將下一個字元視為常值,而非可能具有的任何特殊意義。
"text" 將引號內的任何文字顯示為常值。

日期和時間格式範例

假設日期和時間為 Tuesday, April 5, 2016, 4:08:53.528 PM,下表列出一些模式範例,以及對應的日期時間呈現方式。表格的第二部分顯示經過時間格式範例,經過時間為 3 hours, 13 minutes, 41.255 seconds:

日期時間模式 Tuesday, April 5, 2016, 4:08:53.528 PM
h:mm:ss.00 a/p 下午 4:08:53.53
hh:mm A/P".M." 下午 4:08
yyyy-mm-dd 2016-04-05
mmmm d \[dddd\] 4 月 5 日 [星期二]
h PM, ddd mmm dd 4 月 5 日星期二下午 4 點
dddd, m/d/yy at h:mm 4/5/16 週二 16:08
經過時間模式 3 hours, 13 minutes, 41.255 seconds
[hh] 03
[mmmm] 0193
[ss] 11621

數字格式模式

「數字格式模式」是一串符記子字串,Google 試算表在剖析時會將其替換為對應的數字表示法。數字格式模式最多可包含四個部分,以分號分隔,分別定義正數、負數、零和文字 (依此順序) 的格式:

[POSITIVE FORMAT];[NEGATIVE FORMAT];[ZERO FORMAT];[TEXT FORMAT]

格式中不一定要包含所有四個部分。如果只加入一個部分,試算表會將該格式套用至所有值。如果使用兩個區段,則第一個格式會套用至零和正數,第二個格式則會套用至負數。使用三個區段,分別定義正數、負數和零的格式。例如:

[NUMBER FORMAT]
[POSITIVE/ZERO FORMAT];[NEGATIVE FORMAT]
[POSITIVE FORMAT];[NEGATIVE FORMAT];[ZERO FORMAT]

不過,如果有多個區段,且最後一個區段是文字格式,試算表會將該區段視為文字格式,其他區段則會視為少一個區段。因此,只要加入最終文字格式,就能定義下列格式:

[POSITIVE/ZERO FORMAT];[NEGATIVE FORMAT];[TEXT FORMAT]
[NUMBER FORMAT];[TEXT FORMAT]

系統會先將格式剖析為區段,再進行其他剖析,因此可以將日期或時間格式納入其中一個區段 (但這項功能的作用有限)。

數字格式權杖

下表定義了可在格式區段中使用的權杖子字串,用於定義如何表示該區段的值。

權杖 說明
0 代表數字中的某個位數。如果數字是不重要的 0,則會顯示為 0。舉例來說,數字格式 00.0 會將數字 3 顯示為「03.0」。
# 代表數字中的某個位數。如果數字是不重要的 0,則不會顯示。舉例來說,數字格式 ##0 會將數字 12 顯示為「12」。
? 代表數字中的某個位數。如果數字是不重要的 0,則會顯示為空格。使用固定寬度字型時,通常會用來對齊資料欄中的小數點。舉例來說,數字格式 ???.??? 會將數字 12.4 顯示為「12.4」。
. 第一個句號代表數字中的小數點。後續的句號則會顯示為常值。如果您在格式中加入小數點,系統一律會顯示小數點,即使是整數也一樣。例如,#0.# 會將數字 3 顯示為「3.」。
% 顯示為常值,但也會在顯示前將現有數字乘以 100,讓百分比更易於閱讀。舉例來說,數字格式 #% 會將數字 0.25 顯示為「25%」。
, 如果出現在兩個數字字元 (0、# 或 ?) 之間,則會使用分組分隔符 (以千為單位分組) 顯示整個數字。如果逗號位於數字字元之後,則每出現一個逗號,數字就會縮小一千倍 (例如,格式 #0.0,, 會將數字 12,200,000 顯示為 12.2)。
E- 以科學格式顯示數字,E 左側的格式用於非指數部分,E 右側的格式用於指數部分。E+ 會為正指數顯示 + 符號。E- 只會顯示負指數的符號。如果使用小寫,輸出內容 e 也會是小寫。舉例來說,數字格式 ##0.00#E+## 會將數字 0.0000001 顯示為「100.00E-9」。
E+
e-
e+
/ 如果出現在兩個數字字元 (0、# 或 ?) 之間,系統會將這些數字群組視為分數格式。舉例來說,數字格式 0 #/# 會將數字 23.25 顯示為 23 1/4。分母也可以是整數常值,在這種情況下,系統會強制將該整數做為分母。數字格式 0 #/8 會將數字 23.25 顯示為 23 2/8。如果分子為 0,則不會顯示分數部分。數字 23.1 採用數字格式 0 #/3 時,會顯示為 23 (因為 0.1 會四捨五入為 0/3)。/ 與科學格式或含有小數點的格式不相容。
* 為與 Microsoft Excel 數字格式相容而提供。 試算表會忽略這個符記。
_ 略過下一個字元,並顯示空格。使用這個符記,可對齊負值前後有括號的數字格式。
\ 將下一個字元視為常值,而非可能具有的任何特殊意義。舉例來說,數字格式 \#0 會將數字 10 算繪為「#10」。
"text" 將引號內的任何文字顯示為常值。
@ 如果儲存格有文字輸入,則會插入儲存格的原始文字。不與任何其他特殊字元相容,且不會顯示數值 (數值會以一般格式顯示)。
$ - + ( ) : space 試算表會將這些字元和常見的貨幣符號 (例如 $、€、£ 和 ¥) 視為常值,並原樣顯示。

Meta 指令

此外,每個格式區段都可以有選用的中繼指令,這些指令會以 [] 字元括住,並放在格式前面,提供額外指示:

指令 說明
[condition] 將該區段預設的正值、負值或零值比較,替換為其他條件運算式。舉例來說,[<100]"Low";[>1000]"High";000 會針對低於 100 的值顯示「Low」字樣,針對高於 1000 的值顯示「High」字樣,並針對介於兩者之間的值顯示三位數數字 (開頭為 0)。你只能對前兩種子格式套用條件,如果數字符合多個條件,試算表會使用第一個相符的條件。如果有第三種格式,試算表會將其用於「其他所有項目」;否則,如果數字不符合任一格式,試算表會在整個儲存格寬度中顯示所有「#」字元。如果存在,第四種格式一律用於文字。
[Color] or [Color#] 使這個子格式轉譯的任何值都以指定的文字顏色顯示。Color 的有效值為 Black、Blue、Cyan、Green、Magenta、Red、White 或 Yellow。Color# 中「#」的有效值為 1 到 56。數字格式顏色會覆寫使用者在儲存格中輸入的任何顏色,但不會覆寫條件式格式設定的顏色。這個調色盤會顯示與每個數字對應的顏色清單。這些函式是以 Microsoft Excel 中的 ColorIndex 屬性為基礎。
[$currency] 以文字形式顯示指定的貨幣符號或代碼 (例如 [$€]#,##0.00 或 [$CAD]#,##0.00)。如果在連字號後方加上選用的語言代碼 (例如 [$CAD-1009]),試算表會忽略語言代碼。

數字格式範例

下表列出一些模式範例,以及對應的格式化數字呈現方式:

數字 模式 格式化值
12345.125 ####.# 12345.1
12.34 000.0000 012.3400
12 #.0# 12.0
5.125 # ???/??? 5 1/8
12000 #,### 12,000
1234.56
-1234.56
$#,##0.00;($#,##0.00) $1,234.56
($1,234.56)
1230000 0.0,,"M" 120 萬
1234500000 0.00e+00 1.23e+09
123114.15115
MyText
###0.000;"TEXT: "_(@_) 123114.151
TEXT: MyText
1234
-1234
0
MyText
[Blue]#,##0;[Red]#,##0;[Green]0.0;[Magenta]_(@_) 1,234
1,234
0.0
MyText
1005
32
527
[>1000]"HIGH";[Color43][<=200]"LOW";0000 最高溫
最低溫
0527