日期和数字格式

日期时间和数字格式可用于控制数据在工作表中的显示方式。Google 表格提供了一些常用格式供您选择,不过您也可以定义自己的格式。

在表格界面中,您可以使用 Format(格式)> Number(数字)菜单向单元格应用数字和日期格式。在表格 API 中,您可以通过使用 spreadsheets.batchUpdate 方法调用发送 UpdateCellsRequestRepeatCellRequest 的方式设置这些格式。

本页介绍了如何定义您可以包含在 API 请求中的新日期和数字格式模式。为范围设置自定义日期时间或小数格式示例演示了如何使用 API 设置格式模式。请注意,格式的实际呈现方式取决于电子表格的 locale。本指南假定 localeen_US。您可以通过使用 spreadsheets.get 请求读取 SpreadsheetProperties 来确定电子表格的 locale

日期和时间值简介

与大多数其他电子表格应用一样,Google 表格也以十进制值形式处理日期和时间值。这样,您就可以在公式中对这些值执行算数运算,从而递增天数或周数、将两个日期和时间相加或相减,以及执行其他类似运算。

表格使用电子表格中常用的公元纪年日期格式。值的整数部分(小数点左侧)表示自 1899 年 12 月 30 日以来的天数。小数部分(小数点右侧)表示时间在一天中所占的比例。例如,1900 年 1 月 1 日中午是 2.52 表示自 1899 年 12 月 30 日已过去 2 天,0.5 则是因为中午刚好是一天的一半。1900 年 2 月 1 日下午 3 点是 33.625

Google 表格将 1900 年视为平年而不是闰年,这种处理是正确的。

日期和时间格式模式

日期时间格式模式是一串令牌子字符串,解析后会替换为相应的日期时间元素(如月份或小时)。

日期和时间格式令牌

下表定义了您可以在日期时间格式模式中使用的令牌子字符串。+ 字符表示上一个字符可以出现一次或多次,且仍然匹配模式。下表中未列出的字符会被视为字面量,并且将保持原样输出。

令牌 说明
h 一天中的时段。在 12 小时制和 24 小时制之间切换,具体取决于字符串中是否存在“凌晨/上午”或“下午/晚上”指示器。
hh+ 与上一个令牌相同,不过对于 1-9 则带一个前导 0。
m 如果前面的非字面量令牌为小时或后面的为秒,它将表示小时中的分钟(无前导 0)。否则,将以数字形式表示一年中的月份(无前导 0)。
M 不带前导零的月份。使用此令牌可在图案中明确指明一个月(而非一分钟)。
mm m 相同,不过在两种情况下均带前导 0。
MM 一年中的月份,带有前导零。使用此令牌可在图案中明确指明一个月(而非一分钟)。
mmm 三个字母的月份缩写(例如“Feb”)。
mmmm 月份的全名。mmmmmm+ 也与此项匹配。
mmmmm 月份的第一个字母(例如,6 月的“J”)。
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 AM 显示“a”,PM 显示“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 PM, Tue Apr 05
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]”Low”;[>1000]”High”;000 会为小于 100 的值显示单词“Low”,为大于 1000 的值显示“High”,为介于 100 与 1000 之间的任何值显示一个三位数(带前导 0)。条件仅可以应用到前两种子格式,并且如果一个数字与多个格式匹配,它将使用匹配的第一个格式。如果存在第三种格式,该格式将用于“其他任何内容”,否则,如果一个数字不与任何格式匹配,该数字将完全呈现为用来填补单元格宽度的“#”形式。如果存在第四种格式,该格式将始终用于文本。
[Color] or [Color#] 将此子格式呈现的任何值以给定文本颜色显示。Color 的有效值为 Black、Blue、Cyan、Green、Magenta、Red、White 或 Yellow。 Color# 中“#”的有效值为 1-56(此调色板显示了一个对应于每个数字的颜色列表)。数字格式颜色会替换用户在单元格中输入的任何颜色,但不会替换通过条件格式设置的颜色。

数字格式示例

下表显示了一些示例模式及其对应的格式设置数字呈现:

数字 模式 设置值的格式
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 HIGH
LOW
0527