Format 函数(针对 Visual Basic 6.0 用户)
更新:2007 年 11 月
Visual Basic 2008 中的 Format 函数现在按照公共语言运行库 (CLR) 规范设置数据格式。有关 .NET Framework 中的数据格式设置的更多信息,请参见格式化类型。
以下几节详细介绍了 Visual Basic 2008 对用户定义的日期/时间、数值和字符串格式所做的更改。
用户定义的日期/时间格式
Visual Basic 6.0
在 Visual Basic 6.0 中,若要显示短日期或长日期,可以使用“ddddd”或“dddddd”格式说明符。DayOfWeek(“w”)和 WeekOfYear(“ww”)说明符显示视为每周第一天的那一天以及视为每年第一周的那一周。小写“m”字符将月份显示为不带前导零的数字。Quarter 说明符(“q”)将每年的季度显示为数字 1 到 4。
若要将分钟显示为带有或不带前导零的数字,请使用“Nn”或“N”格式说明符。字符“Hh”将小时显示为带前导零的数字,而“ttttt”则将时间显示为完整的时间。对于中午前后的小时,如果希望显示时带有大写或小写的“A”或“P”,可使用“AM/PM”、“am/pm”、“A/P”、“a/p”或“AMPM”。
短日期/时间说明符(“c”)以“ddddd ttttt”格式显示日期和时间。
Visual Basic 2005
在Visual Basic 2008 中,“ddddd”和“dddddd”与“dddd”的行为相同,即显示天的完整名称。它们不显示短日期和长日期。不支持 DayOfWeek(“w”)和 WeekOfYear(“ww”)。但可以使用 DatePart 函数,如下面的示例所示。
Format(DatePart(DateInterval.Weekday, Now))
...
Format(DatePart(DateInterval.WeekOfYear, Now))
“M”和“m”表示的内容不同,因此它们区分大小写。大写“M”仅用于日期/时间格式的日期部分中的月份,而小写“m”仅用于时间部分中的分钟。
不支持 Quarter 格式说明符。但可以使用 DatePart 函数,如下面的示例所示。
Format(DatePart(DateInterval.Quarter, Now))
若要将分钟显示为带有或不带前导零的数字,请分别使用“m”或“mm”。不再支持“ttttt”格式。“H”和“h”表示的内容不同,因此它们区分大小写。大写“H”仅用于 24 小时时钟,而小写“h”仅用于 12 小时时钟。用“t”和“tt”替换 AM/PM 格式。
“c”说明符用于货币格式设置。对于日期/时间格式设置,使用“g”表示短日期/时间说明符,使用“G”表示常规日期/时间说明符。“g”和“G”都使用当前区域设置确定适当的日期和时间格式。
用户定义的数值格式
Visual Basic 6.0
在 Visual Basic 6.0 中,Format 函数必要时在设置格式之前将字符串转换为数字。如果没有小数部分,Format 显示一个尾随小数点。
Visual Basic 6.0 在格式设置字符串中支持四个部分。这些部分由分号 (;) 分隔,分别指定如何设置正、负、零和 null 值的格式。如果格式字符串的负数部分为空,则负数会显示一个空字符串。
科学记数法格式设置支持在指数后使用“0”和“#”位占位符。
Visual Basic 2005
在 Visual Basic 2008 中,Format 函数在设置格式之前不将字符串转换为数字。您必须将数字而不是字符串作为第一个参数传入。在下面的示例中,第一行代码在 Visual Basic 2008 中不会产生预期结果,第二行则可以。
MsgBox(Format("1.234", "#.#")) ' Displays "#.#".
...
MsgBox(Format(CSng("1.234"), "#.#")) ' Displays "1.2".
不显示尾随小数点,如下例所示。
MsgBox(Format(123, "###.")) ' Displays "123"
...
MsgBox(Format(123, "###.#")) ' Displays "123"
Visual Basic 2008 在格式设置字符串中支持三个部分,这三部分分别设置正、负和零值的格式。如果非零值按照第一或第二个格式部分四舍五入为零,则按照第三部分对得出的零设置格式。如果格式字符串的负数部分为空,则负数会显示一个减号,如下例所示。
MsgBox(Format(-1, ";")) ' Displays "-".
科学记数法格式设置只支持“0”位占位符,不支持“#”。在下面的示例中,第一行代码在 Visual Basic 2008 中不会产生预期结果,第二行则可以。
MsgBox(Format(123, "#e+#")) ' Displays "12e+3".
...
MsgBox(Format(123, "#e+0")) ' Displays "1e+2".
字符串格式
Visual Basic 6.0
在 Visual Basic 6.0 中,可以用 @、&、<、> 和 ! 说明符为用户定义的格式字符串创建表达式。
Visual Basic 2005
Visual Basic 2008 消除了对用户定义的格式字符串的表达式支持,因此 @、&、<、> 和 ! 格式说明符没有意义,也不再提供对它们的支持。