日期、时间、数字和其他格式设置

本页介绍Studio中日期、时间和数值的有效格式选项。您可以使用格式选项来定义脚本输出中某些信息的格式。例如,如果您的组织希望以某种方式显示日期,您可以使用datefmt()函数和此页面上的日期格式说明符,将日期从现有格式转换为所需格式。

本页上许多格式说明符的示例,都可在函数的示例脚本中找到。您可以下载脚本并将其导入,然后打开datefmtformatSnippet操作。

日期和时间格式

当您需要指定操作关闭 在 Studio 脚本中执行一个过程,如收集客户数据、播放消息或音乐或将联系人转接给坐席。日期/时间函数(例如datefmt())所返回日期或时间值的格式时,请使用格式说明符。日期/时间值的每个部分都有说明符,例如日、月、年、小时、分钟等。

通过将说明符与分隔符二者结合,您可以定义日期/时间值的显示方式。如果您的组织对日期/时间值的外观有要求,这会很有帮助。了解所需的日期/时间格式后,请使用本节中定义的格式说明符,在脚本中构建格式。

下表显示了一些日期和时间及其相应格式的示例。“带说明符的格式”列显示了如何使用格式说明符来构造“日期样式”列中的每个日期/时间示例。说明符(例如Md hs等)表示日期/时间值的一部分,例如月份、天、小时等等。

日期样式 带说明符的格式
04/04/2023 年04:29:12 AM MM/dd/yyyy hh:mm:ss tt

6/29/2023 年下午 3:15:45

M/d/yy h :m:s tt

2023 年 4 月 22 日星期六  ddd MMM dd yyyy
2023 年 6 月 15 日,星期四 dddd, MMMM dd yyyy

Studio 支持 24 小时时间,不支持 12 小时时间。在脚本中处理时间时请考虑这一点。

OLE 自动化

OLE Automation Date 是以浮点数形式写入的日期。小数点左边表示自 1899 年 12 月 30 日午夜以来的天数。小数点右边是当天时间除以 24。例如,1899 年 12 月 31 日早上 6 点的浮点数是 1.25。

OLE 自动化日期-时间用于 Studio 脚本中的多个位置。一些处理日期和时间的函数,使用此格式作为输入或输出。此帮助页面上描述的许多日期-时间格式,都使用了 OLE 自动化日期-时间。

日期和时间格式说明符

使用日期和时间格式说明符时,以下事项很重要:

  • 大写和小写 :说明符的大小写会改变输出。例如,在适用的情况下,小写的 f 会产生包含尾随零的毫秒数。大写字母 F 会去掉尾随零。在另一个示例中,小写字母 m 输出分钟数,而大写字母 M 输出月份。
  • 包含的每个字符的数量 :包含一个、两个或多个格式说明符会更改输出。例如,使用单个 h 表示小时会导致所有单位数小时都没有起首零位。两个 hh 字符会产生带起首零位的单位数小时。
  • 组合字符或单独使用:要单独使用单个说明符而不使用其他说明符,必须在其前面加上百分号 %。例如,要仅输出分钟,您可以使用 %m。如果不加上百分号,格式将不起作用。如果将单个说明符与其他说明符结合使用,则不需要加上百分号。例如,如果您的格式包含小时和单个 m(如 hh:m 所示),则不需要百分号。

日期/时间格式规范中包含的任何非说明符都会传递到输出中,并且不会影响日期/时间值。您可以使用它来分隔日期/时间值的各个部分。冒号 (:) 和正斜杠 (/) 传统上用于分隔日期/时间值的各个部分。您可以按照指定的格式使用任何所需的分隔符,包括非传统字符,例如破折号 (-)。

例如,如果您想用竖线字符来分隔日期和时间,您可以将其加入格式,然后它会添加到输出中。根据您使用的函数,可能需要冒号和正斜杠。例如,asdatetime()函数需要这些字符。

代表 格式说明符 详细信息
d

以 1 到 31 的一个数字表示月份中的某一天:27

单位数日期的格式不含起首零位:3

如果单独使用,请添加前缀%

dd

以 01 到 31 的一个双位数字表示月份中的某一天:27

单位数日期的格式含有起首零位:03

ddd 代表星期几的缩写名称:Thu
dddd 代表星期几的全名:Thursday
M

以 1 到 12 的一个数字表示月份:11

单位数月份的格式不含起首零位:5

如果单独使用,请添加前缀%

MM

以 01 到 12 之间的一个双位数表示月份:11

单位数月份的格式含有起首零位:05

MMM 代表月份的缩写名称:Oct
MMMM 代表月份的全名:October
y

用单位数或双位数表示年份:23

如果年份超过两位数,则结果中只显示两个低位数。例如,假设年份为 2023 年,则显示为 23

如果双位数年份的第一个数字以零开头(例如 02),则此数字的格式不含起首零位:2

yy

用双位数表示年份:23

如果年份超过两位数,则结果中只显示两个低位数。例如,假设年份为 2023 年,则显示为 23

如果双位数的年份少于两个有效数字,则用起首零位填充数字以达到两位数:02

如果单独使用,请添加前缀%

yyy

用最少三位数表示年份:2023

如果年份有超过三个有效数字,则将它们包含在结果字符串中。如果年份少于三位数,则用起首零位填充数字以达到三位数。

备注:泰国佛历可能有五位数年份,此格式说明符将显示所有五位数。

yyyy

用四位数表示年份:2023

如果年份超过四位数,则结果中只显示四个低位数。如果年份少于四位数,则用起首零位填充数字以达到四位数。

备注:泰国佛历可能有五位数年份,此格式说明符将显示所有五位数。

yyyyy

用五位数表示年份。

如果年份超过五位数,则结果中只显示五个低位数。如果年份少于五位数,则用起首零位填充数字以达到五位数:02023

如果有五个以上的 y 说明符,则根据需要用尽可能多的起首零位来填充该数字,以达到 y 说明符的数量。例如,如果有八个 y 说明符,则输出为 00002023

时期或时代 g, gg(加上任意数量的额外 g 说明符)

表示时期或时代,例如 A.D。如果要格式化的日期没有关联的时期或时代字符串,则脚本将忽略此说明符。

单个 g 不能独立使用。如果只想输出时代或时期的名称,请使用双 gg

小时(12 小时制) h

对于 12 小时制,将小时表示为从 1 到 12 的一个数字;12小时制从午夜或中午开始计算整小时数。

午夜后的某一小时与中午后的同一小时不可区分。例如,上午 1:00 与下午 1:00 相同。

小时不会四舍五入,一位数小时的格式不带起首零位。

如果单独使用,请添加前缀%

例如,对于 5:43 这一时间,此自定义格式说明符将显示 5

hh

对于 12 小时制,将小时表示为从 01 到 12 的一个双位数;12 小时制从午夜或中午开始计算整小时数。

午夜后的某一小时与中午后的同一小时不可区分。例如,上午 1:00 与下午 1:00 相同。

小时不会四舍五入,一位数小时的格式带起首零位。

例如,对于 5:43 这一时间,此自定义格式说明符将显示 05

小时(24 小时制) H

对于 24 小时制,将小时表示为从 0 到 23 的一个数字;24 小时制从午夜开始计算小时数。

一位数小时的格式不带起首零位。

例如,对于下午 5:43 这一时间,此自定义格式说明符将显示 17

如果单独使用,请添加前缀 %

HH

对于 24 小时制,将小时表示为从 00 到 23 的一个双位数;24 小时制从午夜开始计算小时数。

一位数小时的格式带起首零位。

例如,对于下午 5:43 这一时间,此自定义格式说明符将显示 17

分钟 m

以 0 到 59 的一个数字表示分钟。

分钟代表自上一小时以来已经过去的整数分钟。一位分钟数的格式不带起首零位。

例如,对于 5:43:34 这一时间,此自定义格式说明符将显示 43

如果单独使用,请添加前缀%

mm

以 00 到 59 的一个双位数表示分钟。

分钟代表自上一小时以来已经过去的整数分钟。一位数分钟的格式带起首零位。

例如,对于5:03:34 这一时间,此自定义格式说明符将显示 03

第二 s

以 0 到 59 的一个数字表示秒钟。

结果代表自上一分钟以来已经过去的整数秒。一位数秒的格式不带起首零位。

例如,对于 5:43:04 这一时间,此自定义格式说明符将显示 4

如果单独使用,请添加前缀%

ss

以 00 到 59 的一个双位数表示秒钟。

结果代表自上一分钟以来已经过去的整数秒。一位数秒的格式带起首零位。

例如,对于 5:43:04 这一时间,此自定义格式说明符将显示 04

小数秒 ff, F

表示秒钟小数部分的位数。小写 f 说明符带有尾随零。大写 F 说明符省略了尾随零。

此说明符仅适用于 OLE 自动 关闭 一种将日期写为浮点整数的方法。指示自 1899 年 12 月 30 日以来的天数。 日期/时间。

所包含的 f F 字符的数量决定了要包含的秒钟小数部分的有效位数量:

  • F:十分之一秒,或最高有效位。如果该数位为零,则不显示任何内容。
  • ffFF:百分之一秒或两个有效位。
  • fffFFF:千秒之一秒或三个有效位。这也称为毫秒。
  • ffffFFFF:万分之一秒或四个有效位。
  • fffffFFFFF:十万分之一秒或五个有效位。
  • ffffffFFFFFF:百万分之一秒或六个有效位。
  • FFFFFFF:千万分之十秒或七个有效位。

规定的精度越高,它的可靠性或意义就可能越低。时间值的精度取决于计算机系统时钟的分辨率。

上午/下午 t

代表 AM/PM 标志符的第一个字符。如果格式化的时间小于 12 小时,则使用 AM 指示符。否则使用 PM 指示符。

对于使用 AM/PM 名称的语言,如果第一个字符相同而第二个字符发生变化,请使用 tt 说明符。

如果单独使用,请添加前缀%

tt

表示 AM/PM 标志符。如果格式化的时间小于 12 小时,则使用 AM 指示符。否则使用 PM 指示符。

对于使用 AM/PM 指示符的语言(例如日语),如果第一个字符相同而第二个字符发生变化,请使用 tt 说明符。

相对 UTC 的本地偏移 z

表示本地操作系统的时区相对协调世界时 (UTC) 的带符号偏移量。z 字符的数量定义了要显示的偏移量:

  • z, zz:测量偏移量(以小时为单位)。
  • zzz:测量偏移量(以小时和分钟为单位)。

偏移量始终附带前导符号显示。加号 (+) 表示时间早于 UTC 的小时数,减号 (-) 表示时间晚于 UTC 的小时数。偏差范围为 –12 至 +13。一位数偏差的格式带起首零位。

如果单独使用,请添加前缀%

数字格式

当您需要定义操作关闭 在 Studio 脚本中执行一个过程,如收集客户数据、播放消息或音乐或将联系人转接给坐席。或函数(例如format())返回数值的格式时,请使用这些格式说明符。说明符有多种用途,例如货币、百分比、定点数等等。

精度说明符

本节所述的许多格式说明符都采用精度说明符。精度说明符允许您定义要加入输出的小数点后的位数。

精度说明符是您加在格式说明符后的一个数字。在以下示例中,C 是格式说明符,3 是精度说明符。表示输出结果保留小数点后三位。

ASSIGN CurrencyResultBigC = "{StringVal.format('C3')}"

假设起始编号为 0013001.93912837,那么此示例的输出为 $13,001.939

数字说明符

数字类型 格式说明符 详细说明
货币 Cc

数字转换为代表货币金额的字符串。加入一个带有格式说明符的数字,表示您希望该数字具有的小数位数。格式说明符的大小写不影响结果。

ASSIGN StringVal = "0013001.93912837"
ASSIGN CurrencyResult = "{StringVal.format('C')}"
ASSIGN CurrencyResult3 = "{StringVal.format('C3')}"

结果

CURRENCYRESULT=$13,001.94

CURRENCYRESULT3=$13,001.939

指数表示法(科学) Ee

E0

E-0

e0

e+0

e-0

数字转换为具有 -d.ddd…E+ddd-d.ddd…e+ddd 格式的字符串,其中每个 d 表示一个单位数 (0-9)。如果数字为负数,则该字符串以减号开头。小数点前面始终有一个数字。

加入一个带有格式说明符的一个数字,表示您想要的小数点后的位数。如果不加入精度说明符,则脚本默认精度为小数点后六位。

格式说明符的大小写表示输出的指数是否以 Ee 为前缀。指数始终由一个加号或减号组成,并且最小包含三位数。如果需要,指数用零填充以满足该最低要求。

如果字符串 EE+E-ee+e- 中的任何一个出现在格式字符串中,且后面紧跟至少一个 0 字符,则使用科学记数法对数字进行格式转换,在数字和指数之间插入 Ee

科学记数指示符后 0 字符的数量决定了指数要输出的最少位数。E+e+ 格式表示符号字符(加号或减号)应始终位于指数之前。EE-ee-格式表示符号字符应仅位于负指数之前。

 ASSIGN StringVal = "0013001.93912837"
ASSIGN ScientificResult = "{StringVal.format('e')}"		
ASSIGN ScientificResult = "{StringVal.format('E2')}"	

结果

SCIENTIFICRESULT=1.300194e+004

SCIENTIFICRESULT2=1.300194E+004

定点 F f

数字转换为 -ddd.ddd… 格式的字符串,其中每个 d 表示一个单位数 (0-9)。如果数字为负数,则该字符串以减号开头。

加入一个带有格式说明符的数字,表示您希望结果具有的小数位数。如果没有精度指示符,脚本默认精度为小数点后两位。

ASSIGN StringVal = "0013001.93912837"
ASSIGN FixedPointResult = "{StringVal.format('F3')}"
ASSIGN FixedPointResult2 = "{StringVal.format('f')}"

结果

FIXEDPOINTRESULT=13001.939

FIXEDPOINTRESULT2=13001.94

一般 Gg

根据数字的类型以及是包含精度说明符,数字将转换为最紧凑的定点记数法或科学记数法。如果精度说明符省略或为零,则数字的类型决定默认精度,如下面的列表所示。

  • Byte 或 SByte:3
  • Int16 或 UInt16:5
  • Int32 或 UInt32:10
  • Int64 或 UInt64:19
  • Single:7
  • Double:15
  • Decimal:29

如果科学计数法表示的数字的指数大于 -5 且小于精度说明符,则使用定点计数法;否则,使用科学计数法。如果需要,结果包含一个小数点,并省略末尾的零。

如果存在精度说明符,并且结果中的有效位数超过指定的精度,则通过舍入去除多余的尾随数字。此规则的例外情况是,如果数字为十进制且省略了精度说明符。在这种情况下,应始终使用定点计数法,并保留末尾的零。

在使用科学记数法的情况下,如果格式说明符是 G,则结果中的指数前缀为 E;如果格式说明符是 g,则前缀为 e

ASSIGN StringVal = "0013001.93912837"
ASSIGN GeneralResult1 = "{StringVal.format('G')}"
ASSIGN StringVal2 = 6002348902348890234.234432234
ASSIGN GeneralResult2 = "{StringVal2.format('G')}"

结果

GENERALRESULT1=13001.93912837

GENERALRESULT2=6.00234890234889E+18

十六进制 Xx

此格式仅支持整数类型。数字转换十六进制数字字符串。格式说明符的大小写表示对大于 9 的十六进制数字使用大写还是小写字符。例如,使用 X 生成 ABCDEF,使用 x 生成 abcdef

精度说明符指示结果字符串中所需的最小位数。如果需要,数字的左边可用零填充,以达到精度说明符给出的位数。

号码 Nn

数字转换为 -d,ddd,ddd.ddd… 格式的字符串,其中

  • 如果需要,减号 (-) 表示负数符号。
  • 每个 d 均代表一个单位数 (0-9)。
  • 逗号 (,) 表示数组之间的千位分隔符
  • 句点 (.) 表示小数点符号。

包含一个精度指定符,用于指示希望结果保留的小数位数。如果不包含精度指定符,默认为小数点后两位。如果数字不包含小数点,则将 .00 添加到输出数字中。

ASSIGN StringVal = "0013001.93912837"
ASSIGN NumberResult = StringVal.format('N')
ASSIGN NumberResult2 = "{StringVal.format('n2')}"

结果

NUMBERRESULT=13,001.94

NUMBERRESULT2=13,001.9391

百分比 P p

数字转换为表示百分比的字符串。为了以百分比形式表示,转换后的数字乘以 100。

包含一个精度指定符,用于指示希望结果保留的小数位数。如果不包含精度指定符,默认为小数点后两位。如果数字不包含小数点,则将 .00 添加到输出数字中。

ASSIGN StringVal = "0013001.93912837"
ASSIGN PercentResult = "{StringVal.format('P')}"
ASSIGN PercentResult2 = StringVal.format('P2')	

结果

PERCENTRESULT=1,300,193.91%

PERCENTRESULT2=1,300,193.91%

往返 R r

此格式仅支持单精度和双精度类型。往返格式说明符保证转换为字符串的数值将解析回同一数值中。该说明符格式化时,首先使用通用格式对该数值进行测试,其中双精度类型的精度为 15 位,单精度类型的精度为 7 位。如果数值成功解析回同一数值,则使用通用格式说明符。然而,如果数值没有成功解析回同一数值,则对于双精度类型使用 17 位精度格式化数值,单精度类型使用 9 位精度格式化数值。

尽管精度说明符可以存在,但其被忽略。当使用该说明符时,往返优先于精度。

ASSIGN StringVal = "0013001.93912837"
ASSIGN RoundTripResult = "{StringVal.format('R')}"	

结果

ROUNDTRIPRESULT=13001.93912837

零占位符 0

使用一个或多个零占位符来定义输出中数字的格式。您可以将此占位符与此表中定义的其他占位符结合使用。

如果格式化的值有一个数字位于格式字符串中“0”出现的位置上,那么该数字将出现在输出字符串中。如果格式字符串中出现 0 的位置上没有出现数字,那么输出字符串中会出现 0。这有助于将零添加到需要起首零位但没有起首零位的数字中。

小数点前最左边的“0”和小数点后最右的“0”的位置,决定了输出字符串中始终出现的位数。

00 说明符会将该值四舍五入到最接近的整数。

ASSIGN number = "2343456.2343"
ASSIGN zeroPlaceholders = "number.format(000,000.00)
ASSIGN number = "456.47"
ASSIGN doubleZeroSpecifier = number.format('00')

示例的结果

zeroPlaceholders = 2,343,456.23

doubleZeroSpecifier = 456

数字占位符 #

使用一个或多个数字占位符来定义输出中数字的格式。您可以将此占位符与此表中定义的其他占位符结合使用。

如果格式化的值有一个数字位于格式字符串中出现“#”的位置上,则该数字将出现在输出结果中。如果格式字符串中出现“#”的位置上没有出现数字,则输出字符串中该位置为空。

如果格式化的数字包含 0 作为有效位,则 0 会出现在输出字符串中。如果 0 不是有效位,那么它不会出现在输出字符串中,即使 0 是要格式化的字符串中唯一的数字。

## 格式字符串会将该值四舍五入到最接近的整数。

ASSIGN number = "2343456.2043"
ASSIGN digitPlaceholders = "number.format(###,###.##)
ASSIGN number = "456.47"
ASSIGN doubleDigitSpecifier = number.format('##')

示例的结果

数字占位符 = 2,343,456.2

双位数说明符 = 456

小数点 .

第一个句点 (.) 格式字符串中的第一个句点 () 字符确定了格式化的值中小数点分隔符的位置。任何其他句点字符都将被忽略。

千位分隔符和记数法 ,

逗号 (,) 字符既可以用作千位分隔符说明符,也可以用作记数法说明符。

千位分隔符说明符:如果在格式化数字整数位的两个数字占位符(0#)之间指定了一个或多个逗号 (,) 字符,则在输出的整数部分的每个数组之间插入一个组分隔符字符。例如,如果使用字符串“#,#”和固定区域性来格式化数字 1000,则输出为“1,000”。

记数法说明符:如果在显式或隐式小数点的左边指定了一个或多个逗号 (,) 字符,则要格式化的数字要为每个记数法说明符除以 1000。例如,如果用字符串 0,, 来格式化数字 100000000 (1亿),则输出为 100

您可在相同的格式字符串中使用千位分隔符和计数法说明符。例如,如果使用字符串 #,0,, 和固定区域性来格式化数字 100000000(10亿),则输出为 1,000

节分隔符 ;

您可以定义两个或三个可能的数字格式选项。根据数字是正数、负数或是零来应用格式。

格式化选项在单个字符串中定义。每个选项均由分号 (;) 字符分隔。使用零、数位、千位、小数等占位符来定义格式,如下面的示例所示。这些占位符见此表。

如果自定义格式字符串中有两个部分:

  • 左侧部分定义正数和零数的格式。
  • 右侧部分定义负数的格式。

例如:

ASSIGN number9 = 928374
ASSIGN sectionSeparator4 = number9.format('000,000.##;00.##')

ASSIGN number10 = -998822.25
ASSIGN sectionSeparator5 = number10.format('000,000.##;00.##')

ASSIGN number11 = 0
ASSIGN sectionSeparator6 = number11.format('000,000.##;00.##')	

示例的结果

sectionSeparator4 = 928,374

sectionSeparator5 = 998822.25

sectionSeparator6 = 000,000

如果有三个部分:

  • 左侧部分定义正数的格式。
  • 中间部分定义负数的格式。
  • 右侧部分定义零数的格式。

例如:

ASSIGN number1 = 1789789
ASSIGN sectionSeparator1 = number1.format('000,000.##;00.##;000.0000')

ASSIGN number2 = 0
ASSIGN sectionSeparator2 = number2.format('000,000.##;00.##;000.0000')

ASSIGN number3 = -4321
ASSIGN sectionSeparator3 = number3.format('000,000.##;00.##;000.0000')

示例的结果

sectionSeparator1 = 1,789,789

sectionSeparator2 = 000.0000

sectionSeparator3 = 4321

所有其他字符 其他

所有其他字符

任何其他字符都被复制到结果字符串中,并且不会影响格式。

转义序列

Studio 支持字符串常量中的转义序列。转义序列允许您在字符串中包含某些特殊字符。双引号或左大括号等字符被识别为代码。此类字符包含在字符串中时,编译器会使用非文字代码含义而不是文字值来解释它们。转义序列允许在字符串中包含这些字符。如果在没有转义序列的字符串中包含这些字符,则输出将不是预期的,并且可能会导致错误。

无需向包含转换后的 XML 或 JSON 的字符串添加转义序列。会自动为需要转义序列的字符添加转义序列。

在使用转义序列的任何字符串前,加上美元符号 ($): $"..."。在双引号内,您可以使用以下任何转义序列:

序列 详细信息
\" 嵌入一个双引号。
\' 嵌入一个单引号。
\t 嵌入一个制表符 (ASCII 9)。
\r 嵌入一个回车符 (ASCII 13)。
\n 嵌入一个换行符 (ASCII 10)。
\b 嵌入一个退格 (ASCII 8)。
\{ 嵌入一个左花括号。如果在右大括号之前的文本中没有转义的左大括号,则只需要转义右大括号。如果需要转义右大括号,则如下所示:\}
\0 嵌入一个空值(0 是一个零值)。

以下示例使用 \n 转义序列向字符串添加换行符。这会将光标向下移动到下一行,而不会返回到该行的开头。

x = $"A phrase\nAnd a new line"

打印字符串时,输出如下所示:

A phrase

And a new line ]

在前面的示例中,右方括号代表光标。

以下示例使用 \" 转义序列在字符串中包含双引号:

y = $"Embedding \"double quotes\" in a string."

打印字符串时,输出如下所示:Embedding "double quotes" in a string.如果没有转义序列,脚本只能识别单词 double 之前的双引号符号之前的字符串。

以下示例使用 \{ 转义序列在字符串中包含文字大括号:

z = $"Using \{curly} braces."

打印字符串时,输出如下所示:Using {curly} braces.如果没有转义序列,脚本会将 {curly} 解释为变量。如果未找到变量 curly 的值,脚本会将其替换为空,因此变量的值将为 Using braces.

其他字符

字符 说明
" 表示带引号的字符串(双引号)。显示在两个双引号 (") 之间的任何字符串的文本值。在脚本中需要显示文字引号的任意位置使用转义字符 (\)。
' 表示带引号的字符串(单引号)。显示在两个单引号 (") 字符之间的任何字符串的文本值。在脚本中需要显示文字撇号字符的任何位置使用转义字符 (\)。
$

用于给包含转义序列的字符串添加前缀。$ 字符必须位于双引号之外。例如:

z = $"Use the \{myVar} variable."

#

用于给值添加前缀将其声明为日期/时间类型。# 字符必须位于双引号之外。例如:

ASSIGN var = #"02/09/2023"

% 单独使用单个说明符时,与日期/时间格式说明符一起使用。% 字符直接位于格式说明符字符之前。例如,要仅输出分钟,请使用 %m