本文档介绍了如何定义新的日期和数字格式模式,以便将其纳入 API 请求中。
日期时间格式和数字格式可用于控制数据在工作表中的显示方式。 Google 表格提供了一些常见格式供您选择,但您也可以自行定义格式。
在表格界面中,您可以使用格式 > 数字 菜单将数字和日期格式应用于单元格。在 Google 表格 API 中,您可以使用
a
spreadsheets.batchUpdate
方法调用来发送
UpdateCellsRequest
或
RepeatCellRequest来设置这些格式。
示例为范围设置自定义日期时间或小数格式展示了如何使用表格 API 设置
格式模式。请注意,格式的实际呈现方式取决于电子表格的
locale。
本文档假定 locale 为 en_US。您可以使用
spreadsheets资源上的
spreadsheets.get方法读取
SpreadsheetProperties
对象,以确定电子表格的locale。
关于日期和时间值
与大多数其他电子表格应用一样,表格将日期和时间值视为小数值。这样,您就可以在公式中对它们执行算术运算,例如递增天数或周数、加减两个日期和时间,以及执行其他类似操作。
表格使用一种在
电子表格中常用的纪元
日期形式。值的整数部分(小数点左侧)表示自 1899 年 12 月 30 日以来的天数。小数部分(小数点右侧)表示时间,以一天为单位。例如,1900 年 1 月 1 日中午
为 2.5,2 表示自 1899 年 12 月 30 日以来的 2 天,0.5 表示
中午为半天。1900 年 2 月 1 日下午 3 点为 33.625。
表格将 1900 年正确视为平年,而不是闰年。
日期和时间格式模式
日期时间格式模式是由 token 子字符串组成的字符串,在解析时,这些子字符串会被替换为相应的日期时间元素(例如月份或小时)。
日期和时间格式 token
下表定义了您可以在日期时间格式模式中使用的 token 子字符串。+ 字符表示前面的字符可以出现一次或多次,并且仍然与模式匹配。此表中未列出的字符会被视为字面量,并按原样输出。
| Token | 说明 |
|---|---|
h |
一天中的时段。 根据字符串中是否存在“凌晨/上午”或“下午/晚上”指示器,在 12 小时制和 24 小时制之间切换。 |
hh+ |
与上一个相同,但对于 1-9,会添加前导 0。 |
m |
如果之前的非字面量 token 是小时,或者后续 token 是 秒,则表示一小时中的分钟(不带前导 0)。否则, 它表示一年中的月份(不带前导 0)。 |
M |
一年中的月份,不带前导 0。使用此 token 在模式中明确声明月份,而不是分钟。 |
mm |
与 m 相同,但在两种情况下都带有前导 0。 |
MM |
一年中的月份,带有前导 0。使用此 token 在模式中明确声明月份,而不是分钟。 |
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 |
对于“凌晨/上午”,显示“a”;对于“下午/晚上”,显示“p”。还会将小时更改为 12 小时制。如果 token 字母大写,输出也会大写。 |
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 p |
hh:mm A/P".M." |
04:08 P.M. |
yyyy-mm-dd |
2016-04-05 |
mmmm d \[dddd\] |
April 5 [Tuesday] |
h PM, ddd mmm dd |
4 PM, Tue Apr 05 |
dddd, m/d/yy at h:mm |
Tuesday, 4/5/16 at 16:08 |
| 经过时间模式 | 3 hours, 13 minutes, 41.255 seconds |
[hh] |
03 |
[mmmm] |
0193 |
[ss] |
11621 |
数字格式模式
数字格式模式是由 token 子字符串组成的字符串,在解析时,这些子字符串会被替换为相应的数字表示形式。数字格式模式最多可以包含四个部分,用分号分隔,这些部分定义了用于正数、负数、零和文本的单独格式(按此顺序):
[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]
将格式解析为各个部分的操作会在其他解析操作之前进行,因此可以将日期或时间格式作为其中一个部分包含在内(不过这种做法的实用性有限)。
数字格式 token
下表定义了您可以在格式部分中使用的 token 子字符串,以定义如何表示该部分的值。
| Token | 说明 |
|---|---|
0 |
表示数字中的一位数。如果该数字是无关紧要的 0,
则呈现为 0。例如,数字格式
00.0 将数字 3 呈现为“{1/ }”。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 数字格式兼容。系统会忽略此项。 |
_ |
下划线 token 会跳过下一个字符并呈现空格。这用于对齐 数字格式,其中负值用括号括起来。 |
\ |
将下一个字符视为字面量值,而不是它可能具有的任何特殊
含义。例如,数字格式 \#0
将数字 10 呈现为“#10”。 |
"text" |
将引号内的任何文本显示为字面量。 |
@ |
如果单元格有文本输入,则会插入单元格的原始文本。与任何其他特殊字符都不兼容,并且不会显示数值(数值以常规格式显示)。 |
$ - + ( ) : space |
表格会将这些字符视为字面量并按原样显示 。 |
元指令
此外,每个格式部分都可以包含可选的元指令,这些指令用 [] 字符括起来,位于格式之前,并提供其他指令。共有两种元指令类型,给定部分可以同时使用这两种类型:
| 指令 | 说明 |
|---|---|
[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
属性。 |
数字格式示例
下表显示了一些示例模式及其对应的格式化数字呈现方式:
| 数字 | 图案 | 格式化值 |
|---|---|---|
| 12345.125 | ####.# |
12345.1 |
| 12.34 | 000.0000 |
012.3400 |
| 12 | #.0# |
12.0 |
| 5.125 | # ???/??? |
5 1/8 |
| 12000 | #,### |
12,000 |
| 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 |