Компоненты Windows Forms. Стандартное и пользовательское форматирование

   
На этом шаге мы рассмотрим использование различных видов форматирования.

   
Стандартное форматирование состоит в применении набора символов форматирования, представленных в таблице 1. Если задано стандартное форматирование даты, а символа форматирования нет в
таблице, которая хранится в соответствующем классе, то система выдаст ошибку. Вид результата форматирования (т. е. строка после форматирования) зависит от Региональных установок вашего
компьютера, задаваемых через панель управления. Компьютеры с различными Региональными установками будут, естественно, выдавать разные результаты форматирования.

Таблица 1. Символы форматирования

Форматный символОписание
dТак задают день месяца. Число, состоящее из одной цифры, не будет иметь впереди нуля
ddТак задают день месяца, но в этом случае число, состоящее из одной цифры, будет иметь впереди ноль
dddПри таком форматировании станут выдаваться не названия дней недели, а их аббревиатуры
ddddПри таком форматировании станут выдаваться полные названия дней недели
MМесяц будет выдаваться в виде числа. Месяц, представленный одной цифрой, не будет иметь впереди нуля
MMМесяц будет выдаваться в виде числа. Месяц, представленный одной цифрой, будет иметь впереди ноль
МММПри таком форматировании станут выдаваться не названия месяцев, а их аббревиатуры
МММMПри таком форматировании будет выдаваться полное название месяца
yПри таком форматировании будет выдаваться год, но без выдачи века. Если год представляется одной цифрой (например, 7-й год), то перед ним нуля не будет
yyПри таком форматировании будет выдаваться год, но без выдачи века. Если год представляется одной цифрой, то в выводе перед ним появится ноль
yyyyПри таком форматировании будет выдаваться год из четырех цифр, включая век
hПри таком форматировании выводится время в 12-часовом формате. Одноразрядное значение времени не будет иметь впереди нуля
hhТакой же смысл, что и для h, но с нулем впереди числа
HПри таком форматировании выводится время в 24-часовом формате. Одноразрядное значение времени не будет иметь впереди нуля
HHТакой же смысл, что и для Н, но с нулем впереди числа
mТак выводятся минуты. Одноразрядное значение не будет иметь впереди нуля
mmТакой же смысл, что и для m, но с нулем впереди числа
sТак выводятся секунды. Одноразрядное значение не будет иметь впереди нуля
ssТакой же смысл, что и для s, но с нулем впереди числа
fТак выводятся доли секунды. Если секунда - это одноразрядное число, то лишние цифры отсекаются
ffТак выводятся доли секунды. Если секунда - это двухразрядное число, то лишние цифры отсекаются
\cЗдесь "с" - это любой символ. Чтобы вывести обратную косую черту (бэкслэш), надо использовать символы "\\"

   Примечание.
В таблице опущены некоторые специфические форматы.

   
Пример форматирования дат приведен в приложении, форма которого в режиме дизайна приведена на рисунке 1, в режиме исполнения - на рисунке 2, а текст обработчиков - в примере ниже.


Рис.1. Форма приложения в режиме дизайна


Рис.2. Форма приложения в режиме выполнения

   
Текст обработчиков:

// Кнопка "Выход"
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
	 Close();
}
// Кнопка "Форматировать дату"
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
	 DateTime^ dt = DateTime(); 
	 String^ s;

	 //объявлен массив строк с именем format и инициализирован форматами
	 array <String^>^ format = {"d/M/y", "dd/MM/yy", "dd/MM/yyyy", 
		 "d MMM yyyy \'г\', ddd", "d MMMM yyyy \'г\', dddd",
		 "dd/MM/yy HH::mm", "ddd, MMM d \"'\"yy"};
	 dt = dateTimePicker1->Value; //здесь будет выбранная дата 
	 for ( int i = 0; i < format->Length; i++ )
	 {
		 //CurrentInfo - учет национальных особенностей 
		 // (см. Региональные установки на панели управления)
		 s = dt->ToString( format[ i ], DateTimeFormatInfo::CurrentInfo ); 
		 //перевод даты в строку с одновременным форматированием
		 listBox1->Items->Add(format[ i ]); 
		 listBox2->Items->Add(s); 
	 } 
}

Архив проекта можно взять здесь.

   
Если нужны региональные настройки, то в перечень используемых пространств h-файла надо добавить строку:

  using namespace System::Globalization;  //для даты

   
На следующем шаге мы приведем некоторые сведения о работе с датами.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий