Функция Format (для пользователей Visual Basic 6.0)
Обновлен: Ноябрь 2007
В версии 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".
Спецификатор Short Date/Time ("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-часового формата. Форматы AM/PM заменены "t" и "tt".
Спецификатор "c" используется для формата валюты. Для форматирования даты и времени используйте "g" в качестве спецификатора короткого формата даты/времени и "G" в качестве спецификатора общего формата даты/времени. Оба спецификатора, "g" и "G", используют текущую настройку языкового стандарта для определения соответствующих форматов даты и времени.
Пользовательские числовые форматы
Visual Basic 6.0
В Visual Basic 6.0 функция Format при необходимости перед форматированием преобразует строки в числа. Функция Format отображает завершающую десятичную точку, если отсутствует дробная часть.
Visual Basic 6.0 поддерживает четыре раздела в строке форматирования. Они разделяются точками с запятой (;) и определяют форматирование положительных, отрицательных, нулевых и пустых значений соответственно. Отрицательные числа с пустым отрицательным разделом в строке форматирования отображаются как пустая строка.
Форматирования научного представления поддерживает заполнители "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 прекращена поддержка выражений для пользовательских строк формата, поэтому спецификаторы @, &, <, > и ! не имеют смысла и больше не поддерживаются.
См. также
Основные понятия
Дата и время (для пользователей Visual Basic 6.0)
Сводка изменений поддержки элементов программирования