Format
返回一个String,包含根据格式表达式中的指令格式化的表达式。
语法:Format$( expression [ , format [ , firstDayOfWeek [ , firstWeekOfYear ] ] ] ), Format( expression [ , format [ , firstDayOfWeek [ , firstWeekOfYear ] ] ] )
- expression
- 必需 任意有效的表达式。
- format
- 可选 有效的命名或用户定义的格式表达式。
- firstDayOfWeek
- 可选 指定一周第一天的常量。
- firstWeekOfYear
- 可选 指定一年第一周的常量。
带$后缀的形式返回String;不带后缀的形式返回Variant(String)。
firstDayOfWeek参数的设置如下:
| 常量 | 值 | 描述 |
|---|---|---|
| vbUseSystem | 0 | 使用NLS API设置。 |
| vbSunday | 1 | 星期日(默认) |
| vbMonday | 2 | 星期一 |
| vbTuesday | 3 | 星期二 |
| vbWednesday | 4 | 星期三 |
| vbThursday | 5 | 星期四 |
| vbFriday | 6 | 星期五 |
| vbSaturday | 7 | 星期六 |
firstWeekOfYear参数的设置如下:
| 常量 | 值 | 描述 |
|---|---|---|
| vbUseSystem | 0 | 使用NLS API设置。 |
| vbFirstJan1 | 1 | 从包含1月1日的那一周开始(默认)。 |
| vbFirstFourDays | 2 | 从一年中至少有四天的第一周开始。 |
| vbFirstFullWeek | 3 | 从一年的第一个完整周开始。 |
| 格式目标 | 操作 |
|---|---|
| 数字 | 使用预定义的命名数字格式或创建用户定义的数字格式。 |
| 日期和时间 | 使用预定义的命名日期/时间格式或创建用户定义的日期/时间格式。 |
| 日期和时间序列数 | 使用日期和时间格式或数字格式。 |
| 字符串 | 创建用户定义的字符串格式。 |
Format将format截断为257个字符。
在不指定format的情况下格式化数字时,Format提供与Str函数类似的功能,但具有国际识别能力。但是,使用Format将正数格式化为字符串时不包含为数值符号保留的前导空格;而使用Str转换的则保留前导空格。
在格式化非本地化的数字字符串时,请使用用户定义的数字格式以确保所需的外观。
INFO
如果Calendar属性设置为Gregorian且format指定了日期格式,则提供的expression必须是公历。如果Calendar属性设置为Hijri,则提供的expression必须是回历。
如果日历为公历,format表达式符号的含义不变。如果日历为回历,所有日期格式符号(例如dddd、mmmm、yyyy)具有相同含义,但适用于回历。格式符号保持英文;产生文本显示的符号(例如AM和PM)显示与该符号关联的字符串(英文或阿拉伯文)。当日历为回历时,某些符号的范围会发生变化。
日期符号
| 符号 | 范围 |
|---|---|
| d | 1-31(月中的日,无前导零) |
| dd | 01-31(月中的日,有前导零) |
| w | 1-7(周中的日,从星期日=1开始) |
| ww | 1-53(年中的周,无前导零;第1周从1月1日开始) |
| m | 1-12(年中的月,无前导零,从一月=1开始) |
| mm | 01-12(年中的月,有前导零,从一月=01开始) |
| mmm | 显示月份缩写(回历月份名称无缩写) |
| mmmm | 显示完整月份名称 |
| y | 1-366(年中的日) |
| yy | 00-99(年份的后两位数字) |
| yyyy | 100-9999(三位或四位数字的年份) |
时间符号
| 符号 | 范围 |
|---|---|
| h | 0-23(附加"AM"或"PM"时为1-12)(时,无前导零) |
| hh | 00-23(附加"AM"或"PM"时为01-12)(时,有前导零) |
| n | 0-59(分,无前导零) |
| nn | 00-59(分,有前导零) |
| m | 0-59(分,无前导零)。仅在前面有h或hh时使用 |
| mm | 00-59(分,有前导零)。仅在前面有h或hh时使用 |
| s | 0-59(秒,无前导零) |
| ss | 00-59(秒,有前导零) |
示例
本示例展示了Format函数的各种用法,使用命名格式和用户定义格式来格式化值。对于日期分隔符(/)、时间分隔符(:)和AM/PM文本,系统显示的实际格式化输出取决于运行代码的区域设置。在开发环境中显示时间和日期时,使用代码区域设置的短时间格式和短日期格式。由运行中的代码显示时,使用系统区域设置的短时间格式和短日期格式,这可能与代码区域设置不同。此示例假设为英语/美国设置。MyTime和MyDate在开发环境中使用当前系统短时间设置和短日期设置显示。
Dim MyTime, MyDate, MyStr
MyTime = #17:04:23#
MyDate = #January 27, 1993#
' Returns current system time in the system-defined long time format.
MyStr = Format(Time, "Long Time")
' Returns current system date in the system-defined long date format.
MyStr = Format(Date, "Long Date")
MyStr = Format(MyTime, "h:m:s") ' Returns "17:4:23".
MyStr = Format(MyTime, "hh:mm:ss am/pm") ' Returns "05:04:23 pm".
MyStr = Format(MyTime, "hh:mm:ss AM/PM") ' Returns "05:04:23 PM".
MyStr = Format(MyDate, "dddd, mmm d yyyy") ' Returns "Wednesday, Jan 27 1993".
' If format is not supplied, a string is returned.
MyStr = Format(23) ' Returns "23".
' User-defined formats.
MyStr = Format(5459.4, "##,##0.00") ' Returns "5,459.40".
MyStr = Format(334.9, "###0.00") ' Returns "334.90".
MyStr = Format(5, "0.00%") ' Returns "500.00%".
MyStr = Format("HELLO", "<") ' Returns "hello".
MyStr = Format("This is it", ">") ' Returns "THIS IS IT".不同数值的不同格式
数字的用户定义格式表达式可以有一到四个用分号分隔的节。如果format参数包含某个命名数字格式,则只允许一个节。
| 节数 | 结果 |
|---|---|
| 仅一个节 | 格式表达式适用于所有值。 |
| 两个节 | 第一节适用于正值和零,第二节适用于负值。 |
| 三个节 | 第一节适用于正值,第二节适用于负值,第三节适用于零。 |
| 四个节 | 第一节适用于正值,第二节适用于负值,第三节适用于零,第四节适用于Null值。 |
"$#,##0;($#,##0)"当包含分号但中间没有任何内容时,缺少的节使用正值的格式打印。例如,以下格式使用第一节中的格式显示正值和负值,如果值为零则显示"Zero"。
"$#,##0;;\Z\e\r\o"不同字符串值的不同格式
字符串的格式表达式可以有一个节或两个用分号(;)分隔的节。
| 节数 | 结果 |
|---|---|
| 仅一个节 | 格式适用于所有字符串数据。 |
| 两个节 | 第一节适用于字符串数据,第二节适用于Null值和零长度字符串("")。 |
命名日期/时间格式
下表标识了预定义的日期和时间格式名称。
| 格式名称 | 描述 |
|---|---|
| General Date | 显示日期和/或时间,例如4/3/93 05:34 PM。如果没有小数部分,则仅显示日期,例如4/3/93。如果没有整数部分,则仅显示时间,例如05:34 PM。日期显示由系统设置决定。 |
| Long Date | 根据系统长日期格式显示日期。 |
| Medium Date | 使用适合宿主应用程序语言版本的中等日期格式显示日期。 |
| Short Date | 使用系统短日期格式显示日期。 |
| Long Time | 使用系统长时间格式显示时间;包括小时、分钟、秒。 |
| Medium Time | 使用12小时格式显示时间,包括小时和分钟以及AM/PM标志。 |
| Short Time | 使用24小时格式显示时间,例如17:45。 |
命名数字格式
下表标识了预定义的数字格式名称。
| 格式名称 | 描述 |
|---|---|
| General Number | 显示不带千位分隔符的数字。 |
| Currency | 显示带千位分隔符的数字(如适用);在小数分隔符右侧显示两位数字。输出基于系统区域设置。 |
| Fixed | 在小数分隔符左侧至少显示一位数字,右侧显示两位数字。 |
| Standard | 显示带千位分隔符的数字,小数分隔符左侧至少一位数字,右侧两位数字。 |
| Percent | 显示乘以100的数字,并在右侧附加百分号(%);始终在小数分隔符右侧显示两位数字。 |
| Scientific | 使用标准科学记数法。 |
| Yes/No | 如果数字为0则显示No;否则显示Yes。 |
| True/False | 如果数字为0则显示False;否则显示True。 |
| On/Off | 如果数字为0则显示Off;否则显示On。 |
用户定义的字符串格式
使用以下任意字符创建字符串的格式表达式。
| 字符 | 描述 |
|---|---|
@ | 字符占位符。显示一个字符或空格。如果字符串在格式字符串中@符号出现的位置有一个字符,则显示该字符;否则,在该位置显示一个空格。占位符从右向左填充,除非格式字符串中有感叹号字符(!)。 |
& | 字符占位符。显示一个字符或不显示。如果字符串在&符号出现的位置有一个字符,则显示该字符;否则,不显示任何内容。占位符从右向左填充,除非格式字符串中有感叹号字符(!)。 |
< | 强制小写。以小写格式显示所有字符。 |
> | 强制大写。以大写格式显示所有字符。 |
! | 强制从左到右填充占位符。默认为从右到左填充占位符。 |
用户定义的日期/时间格式
下表标识了可用于创建用户定义日期/时间格式的字符。
| 字符 | 描述 |
|---|---|
: | 时间分隔符。在某些区域设置中,可能使用其他字符来表示时间分隔符。时间分隔符在格式化时间值时分隔小时、分钟和秒。格式化输出中用作时间分隔符的实际字符由系统设置决定。 |
/ | 日期分隔符。在某些区域设置中,可能使用其他字符来表示日期分隔符。日期分隔符在格式化日期值时分隔日、月和年。格式化输出中用作日期分隔符的实际字符由系统设置决定。 |
c | 将日期显示为ddddd,将时间显示为ttttt,按此顺序。如果日期序列数没有小数部分,则仅显示日期信息;如果没有整数部分,则仅显示时间信息。 |
d | 将日显示为不带前导零的数字(1--31)。 |
dd | 将日显示为带前导零的数字(01--31)。 |
ddd | 将日显示为缩写(Sun--Sat)。本地化。 |
dddd | 将日显示为全名(Sunday--Saturday)。本地化。 |
ddddd | 将日期显示为完整日期(包括日、月和年),根据系统短日期格式设置进行格式化。默认短日期格式为m/d/yy。 |
dddddd | 将日期序列数显示为完整日期(包括日、月和年),根据系统识别的长日期设置进行格式化。默认长日期格式为mmmm dd, yyyy。 |
w | 将周中的日显示为数字(1表示星期日至7表示星期六)。 |
ww | 将年中的周显示为数字(1--54)。 |
m | 将月显示为不带前导零的数字(1--12)。如果m紧跟在h或hh之后,则显示分钟而非月份。 |
mm | 将月显示为带前导零的数字(01--12)。如果m紧跟在h或hh之后,则显示分钟而非月份。 |
mmm | 将月显示为缩写(Jan--Dec)。本地化。 |
mmmm | 将月显示为完整月份名称(January--December)。本地化。 |
q | 将年中的季度显示为数字(1--4)。 |
y | 将年中的日显示为数字(1--366)。 |
yy | 将年显示为2位数字(00--99)。 |
yyyy | 将年显示为4位数字(100--9999)。 |
h | 将小时显示为不带前导零的数字(0--23)。 |
hh | 将小时显示为带前导零的数字(00--23)。 |
n | 将分钟显示为不带前导零的数字(0--59)。 |
nn | 将分钟显示为带前导零的数字(00--59)。 |
s | 将秒显示为不带前导零的数字(0--59)。 |
ss | 将秒显示为带前导零的数字(00--59)。 |
ttttt | 将时间显示为完整时间(包括小时、分钟和秒),使用系统识别的时间格式定义的时间分隔符进行格式化。如果选择了前导零选项且时间在上午或下午10:00之前,则显示前导零。默认时间格式为h:mm:ss。 |
AM/PM | 使用12小时制,在中午之前的任何小时显示大写AM;在中午至11:59 P.M.之间的任何小时显示大写PM。 |
am/pm | 使用12小时制,在中午之前的任何小时显示小写am;在中午至11:59 P.M.之间的任何小时显示小写pm。 |
A/P | 使用12小时制,在中午之前的任何小时显示大写A;在中午至11:59 P.M.之间的任何小时显示大写P。 |
a/p | 使用12小时制,在中午之前的任何小时显示小写a;在中午至11:59 P.M.之间的任何小时显示小写p。 |
AMPM | 使用12小时制,在中午之前的任何小时显示由系统定义的AM字符串;在中午至11:59 P.M.之间的任何小时显示由系统定义的PM字符串。 |
用户定义的数字格式
下表标识了可用于创建用户定义数字格式的字符。
| 字符 | 描述 |
|---|---|
| 无 | 显示不带格式的数字。 |
0 | 数字占位符。显示一个数字或零。如果表达式在格式字符串中0出现的位置有一个数字,则显示该数字;否则,在该位置显示零。如果数字的位数少于格式表达式中零(小数点两侧)的位数,则显示前导零或尾随零。如果数字小数分隔符右侧的位数多于格式表达式中零的位数,则将数字四舍五入到零的位数。如果数字小数分隔符左侧的位数多于格式表达式中零的位数,则不加修改地显示多余的数字。 |
# | 数字占位符。显示一个数字或不显示。如果表达式在格式字符串中#出现的位置有一个数字,则显示该数字;否则,在该位置不显示任何内容。此符号的作用类似于0数字占位符,不同之处在于当数字的位数等于或少于格式表达式中小数分隔符两侧的#字符数时,不显示前导零和尾随零。 |
. | 小数占位符。小数占位符决定小数分隔符左侧和右侧显示多少位数字。如果格式表达式中此符号左侧仅包含数字符号,则小于1的数字以小数分隔符开头。要为小数显示前导零,请使用0作为小数分隔符左侧的第一个数字占位符。格式化输出中用作小数占位符的实际字符取决于系统识别的数字格式。 |
% | 百分比占位符。表达式乘以100。百分号(%)插入到格式字符串中出现的位置。 |
, | 千位分隔符。如果格式包含被数字占位符(0或#)包围的千位分隔符,则指定使用千位分隔符。两个相邻的千位分隔符或紧接在小数分隔符左侧的千位分隔符表示"将数字除以1000进行缩放,并根据需要四舍五入。" |
: | 时间分隔符。见上文。 |
/ | 日期分隔符。见上文。 |
E- E+ e- e+ | 科学格式。如果格式表达式中E-、E+、e-或e+的右侧至少包含一个数字占位符(0或#),则数字以科学格式显示,并在数字与其指数之间插入E或e。使用E-或e-在负指数旁放置减号。使用E+或e+在负指数旁放置减号,在正指数旁放置加号。 |
- + $ ( ) | 显示原义字符。要显示未列出的字符,请在其前面加反斜杠(\)或用双引号(" ")将其括起来。 |
\ | 显示格式字符串中的下一个字符。使用反斜杠与将下一个字符用双引号括起来的效果相同。要显示反斜杠,请使用两个反斜杠(\\)。 |
"ABC" | 显示双引号(" ")内的字符串。要在代码中的format中包含字符串,请使用Chr(34)将文本括起来(34是引号"的字符代码)。 |