日期时间和数字格式可用于控制数据在工作表中的显示方式。Google 表格提供了一些常见格式供您选择,但您也可以自行定义格式。
在 Google 表格界面中,您可以使用格式 > 数字菜单为单元格应用数字格式和日期格式。在 Google 表格 API 中,您可以使用 spreadsheets.batchUpdate
方法调用来设置这些格式,以发送 UpdateCellsRequest
或 RepeatCellRequest
。
本页介绍了如何定义新的日期和数字格式模式,您可以将这些模式添加到 API 请求中。为范围设置自定义日期时间格式或小数格式示例展示了如何使用该 API 设置格式模式。请注意,该格式的实际呈现方式取决于电子表格的 locale
。本指南假定 locale
为 en_US
。您可以通过使用 spreadsheets.get
请求读取 SpreadsheetProperties
来确定电子表格的 locale
。
日期和时间值简介
与大多数其他电子表格应用一样,Google 表格会将日期和时间值视为小数值。这样,您就可以在公式中对它们执行算术运算,从而增加或减少天数或星期、对两个日期和时间进行加减运算,以及执行其他类似操作。
Google 表格使用电子表格中常用的公元纪年日期格式。值的整数部分(小数点左侧)用于计算自 1899 年 12 月 30 日以来的天数。小数部分(小数点右侧)将时间计为一天的一部分。例如,1900 年 1 月 1 日正午是 2.5
,2
,因为它是 1899 年 12 月 30 日之后的第 2 天,0.5
,因为正午是半天。1900 年 2 月 1 日下午 3 点的值为 33.625
。
Google 表格会正确地将 1900 年视为平年,而不是闰年。
日期和时间格式模式
日期时间格式模式是一系列令牌子字符串,在解析时会替换为相应的日期时间元素(例如月份或小时)。
日期和时间格式令牌
下表定义了您可以在日期时间格式模式中使用的令牌子字符串。+
字符表示前一个字符可以出现 1 次或多次,并且仍与模式匹配。下表中未列出的字符会被视为字面量,并以原样输出。
令牌 | 说明 |
---|---|
h |
一天中的时段。根据字符串中是否存在“凌晨/上午”或“下午/晚上”指示器,在 12 小时制和 24 小时制之间切换。 |
hh+ |
与上一个相同,但 1-9 的开头为 0。 |
m |
如果上一个非字面量令牌是小时,或者下一个非字面量令牌是秒,则它表示小时中的分钟数(不带前导 0)。否则,它会以数字(不带前导零)表示月份。 |
M |
不带前导零的月份。使用此令牌可在图案中明确指明一个月(而非一分钟)。 |
mm |
与 m 相同,但这两种情况下都带有前导 0。 |
MM |
一年中的月份,带有前导零。使用此令牌可在图案中明确指明一个月(而非一分钟)。 |
mmm |
三个字母的月份缩写(例如“Feb”)。 |
mmmm |
月份的全名。mmmmmm+ 也与此匹配。 |
mmmmm |
月份的第一个字母(例如,6 月为“J”)。 |
s |
一分钟中的秒数,不带前导零。 |
ss |
一分钟中的秒数,含前导零。 |
[h+] |
时长内经过的时数。字母数表示数字的最小数量(会添加前导 0)。 |
[m+] |
时段内已流逝的分钟数。字母数表示数字的最小数量(添加前导 0)。 |
[s+] |
时长内经过的秒数。字母数表示数字的最小数量(会添加前导 0)。 |
d |
一个月中的某天,小于 10 的数字不带前导零。 |
dd |
一个月中的某天,小于 10 的数字应带有前导零。 |
ddd |
星期几,三个字母的缩写(例如“Mon”)。 |
dddd+ |
星期几的全称。 |
y |
2 位数年份。 |
yy |
|
yyy |
年(4 位数)。 |
yyyy+ |
|
a/p |
上午显示“a”,下午显示“p”。同时将小时更改为 12 小时制。如果令牌字母是大写字母,则输出也会是大写字母。 |
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 p |
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 |
2016 年 4 月 5 日(星期二)16:08 |
已用时间模式 | 3 hours, 13 minutes, 41.255 seconds |
[hh]:[mm]:[ss].000 |
03:13:41.255 |
[mmmm]:[ss].000 |
0193:41.255 |
数字格式模式
数字格式模式是一系列令牌子字符串,在解析时会替换为相应的数字表示法。数字格式模式最多可由四个部分组成,并用分号隔开,这些部分用于定义分别用于正数、负数、零和文本的格式(按此顺序):
[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,则系统不会渲染分数部分。采用数字格式 0 #/3 的数字 23.1 仅呈现为 23 (因为 0.1 会四舍五入为 0/3)。/ 不兼容科学格式或包含小数点的格式。 |
* |
添加此字段是为了与 Microsoft Excel 数字格式保持兼容。目前会被忽略。 |
_ |
下划线令牌会跳过下一个字符并呈现一个空格。此属性用于对齐负数用括号括起来的数字格式。 |
\ |
将下一个字符视为字面量值,而不是其可能具有的任何特殊含义。例如,数字格式 \#0 会将数字 10 呈现为“#10 ”。 |
"text" |
将引号内的所有文本都显示为字面量。 |
@ |
如果单元格有文本输入,则会为单元格插入原始文本。不兼容任何其他特殊字符,并且不会显示数字值(以常规格式显示)。 |
$ - + ( ) : space |
Google 表格会将这些字符视为字面量,并以原样显示它们。 |
元指令
此外,每个格式部分都可以包含可选的元说明(用 []
字符括起来),这些说明位于格式之前,用于提供其他说明。元指令有两种类型,给定分块可以同时使用这两种类型:
指令 | 说明 |
---|---|
[condition] |
将该部分的默认正例、负例或零比较替换为其他条件表达式。例如,对于低于 100 的值,[<100]”Low”;[>1000]”High”;000 会呈现“低”字样;对于高于 1000 的值,会呈现“高”字样;对于介于二者之间的值,则会呈现三位数(带有前导 0)。条件只能应用于前两个子格式,如果某个号码与多个子格式匹配,则系统会使用第一个匹配的子格式。如果有第三种格式,则用于“所有其他内容”;否则,如果数字与这两种格式都不匹配,则会呈现为填满单元格宽度的所有“#”。如果存在,则始终使用第四种格式来显示文本。 |
[Color] or [Color#] |
使此子格式呈现的任何值都显示为给定文本颜色。Color 的有效值为 Black、Blue、Cyan、Green、Magenta、Red、White 或 Yellow。 Color# 中“#”的有效值为 1-56(此颜色 Palette 显示了与每个数字对应的颜色列表)。数字格式颜色会替换单元格中用户输入的任何颜色,但不会替换通过条件格式设置的颜色。 |
数字格式示例
下表列出了一些示例模式及其对应的格式化数字呈现方式:
数字 | 模式 | 设置值的格式 |
---|---|---|
12345.125 | ####.# |
12345.1 |
12.34 | 000.0000 |
012.3400 |
12 | #.0# |
12.0 |
5.125 | # ???/??? |
5 1/8 |
12000 | #,### |
12000 |
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 |