Полное руководство. С# 4.0 - Шилдт Герберт
Помимо числовых значений, форматированию нередко подлежит и другой типданных: DateTime. Это структура, представляющая дату и время. Значения даты ивремени могут отображаться самыми разными способами. Ниже приведены лишь некоторые примеры их отображения.06/05/2005Friday, January 1, 201012:59:0012:59:00 PM
Кроме того, дата и время могут быть по-разному представлены в отдельных странах. Для этой цели в среде .NET Framework предусмотрена обширная подсистемаформатирования значений даты и времени.
Форматирование даты и времени осуществляется с помощью спецификаторовформата. Спецификаторы формата даты и времени сведены в табл. 22.7. Конкретноепредставление даты и времени может отличаться в силу региональных и языковых особенностей и поэтому зависит от настройки параметров культурной среды.
Таблица 22.7. Спецификаторы формата даты и времениСпецификаторФорматDДата в длинной формеdДата в краткой формеFДата и время в длинной формеfДата и время в краткой формеGДата — в краткой форме, время — в длиннойggДата и время — в краткой формемМесяц и деньmТо же, что и MOФормат даты и времени, включая часовой пояс. Строка, составленная в формате O, может быть преобразована обратно в эквивалентную форму вывода даты и времени. Это так называемый “круговой” форматoТо же, что и ORДата и время в стандартной форме по ГринвичуrТо же, что и RSСортируемый формат представления даты и времениТВремя в длинной формеtВремя в краткой формеUДлинная форма универсального представления даты и времени; время отображается как универсальное синхронизированное время (UTC)uКраткая форма универсального представления даты и времениYМесяц и годyТо же, что и Y
В приведенном ниже примере программы демонстрируется применение спецификаторов формата даты и времени.// Отформатировать дату и время, используя стандартные форматы.using System;class TimeAndDateFormatDemo { static void Main() { DateTime dt = DateTime.Now; // получить текущее время Console.WriteLine("Формат d: {0:d}", dt); Console.WriteLine("Формат D: {0:D}", dt); Console.WriteLine("Формат t: {0:t}", dt); Console.WriteLine("Формат T: {0:T}", dt); Console.WriteLine("Формат f: {0:f}", dt); Console.WriteLine("Формат F: {0:F}", dt); Console.WriteLine("Формат g: {0:g}", dt); Console.WriteLine("Формат G: {0:G}", dt); Console.WriteLine("Формат m: {0:m}", dt); Console.WriteLine("Формат M: {0:M}", dt); Console.WriteLine("Формат о: (0:o)", dt); Console.WriteLine("Формат O: (0:O}", dt); Console.WriteLine("Формат r: {0:r}", dt); Console.WriteLine("Формат R: {0:R}", dt); Console.WriteLine("Формат s: {0:s}", dt); Console.WriteLine("Формат u: {0:u}", dt); Console.WriteLine("Формат U: {0:U}", dt); Console.WriteLine("Формат у: {0:у}", dt); Console.WriteLine("Y format: {0:Y}", dt); }}
Эта программа дает следующий результат, который, впрочем, зависит от настроекязыковых и региональных параметров локализации базового программного обеспечения.Формат d: 2/11/2010Формат D: Thursday, February 11, 2010Формат t: 11:21 AMФормат T: 11:21:23 AMФормат f: Thursday, February 11, 2010 11:21 AMФормат F: Thursday, February 11, 2010 11:21:23 AMФормат g: 2/11/2010 11:21 AMФормат G: 2/11/2010 11:21:23 AMФормат m: February 11Формат M: February 11Формат о: 2010-02-11T11:21:23.3768153-06:00Формат О: 2010-02-11T11:21:23.3768153-06:00Формат r: Thu, 11 Feb 2010 11:21:23 GMTФормат R: Thu, 11 Feb 2010 11:21:23 GMTФормат s: 2010-02-11T11:21:23Формат u: 2010-02-11 11:21:23ZФормат U: Thursday, February 11, 2010 5:21:23 PMФормат у: February, 2010Формат Y: February, 2010
В следующем примере программы воспроизводятся очень простые часы. Время обновляется каждую секунду, и каждый час компьютер издает звонок. Для получения отформатированного строкового представления времени перед его выводом в этой программе используется метод ToString() из структуры DateTime. Через каждый чассимвол звукового предупреждающего сигнала присоединяется к отформатированнойстроке, представляющей время, в результате чего звенит звонок.// Пример простых часов.using System;class SimpleClock { static void Main() { string t; int seconds; DateTime dt = DateTime.Now; seconds = dt.Second; for(;;) { dt = DateTime.Now; // обновлять время через каждую секунду if (seconds != dt.Second) { seconds = dt.Second; t = dt.ToString("T"); if(dt.Minute==0 && dt.Second==0) t = t + "a"; // производить звонок через каждый час Console.WriteLine(t); } } }}Определение пользовательского формата даты и времени
Несмотря на то что стандартные спецификаторы формата даты и времени предусмотрены практически на все случаи жизни, пользователь может определить своисобственные специальные форматы. Процесс определения пользовательских форматов даты и времени мало чем отличается от описанного выше для числовых типов значений. По существу, пользователь создает пример (т.е. изображение) того, как должны выглядеть выводимые данные даты и времени. Для определения пользовательскогоформата даты и времени служат символы-заполнители, перечисленные в табл. 22.8.
Таблица 22.8. Символы-заполнители специального формата даты и времениСимвол-заполнительНазначениеdДень месяца в виде числа в пределах от 1 до 31ddДень месяца в виде числа в пределах от 1 до 31. Числовые значения в пределах от 1 до 9 дополняются начальным нулемdddСокращенное название дня неделиddddПолное название дня неделиf, ff, fff, ffff, fffff, ffffff, fffffffДробная часть числового значения, обозначающего секунды. Количество десятичных разрядов определяется числом заданных символов fgЭраhЧасы в виде числа в пределах от 1 до 12hhЧасы в виде числа в пределах от 1 до 12. Числовые значения в пределах от 1 до 9 дополняются начальным нулемHЧасы в виде числа в пределах от 0 до 23HHЧасы в виде числа в пределах от 0 до 23. Числовые значения в пределах от 1 до 9 дополняются начальным нулемКЧасовой пояс, указываемый в часах. Для автоматической коррекции местного времени и универсального синхронизированного времени (UTC) используется значение свойства DateTime.Kind. (Этот спецификатор формата рекомендуется теперь вместо спецификаторов с символамизаполнителями Z.)mМинутыmmМинуты. Числовые значения в пределах от 1 до 9 дополняются начальным нулемMМесяц в виде числа в пределах от 1 до 12MMМесяц в виде числа в пределах от 1 до 12. Числовые значенияв пределах от 1 до 9 дополняются начальным нулемМММСокращенное название месяцаMMMMПолное название месяцаsСекундыssСекунды. Числовые значения в пределах от 1 до 9 дополняются начальным нулемtСимвол "А” или “Р”, обозначающий время А.М. (до полудня) или P.M. (после полудня) соответственноttA.M. или P.M.УГод в виде двух цифр, если недостаточно однойУУГод в виде двух цифр. Числовые значения в пределах от 1 до 9 дополняются начальным нулемУУУГод в виде трех цифрУУУУГод в виде четырех цифрУУУУУГод в виде пяти цифрzСмещение часового пояса в часахzzСмещение часового пояса в часах. Числовые значения в пределах от 1 до 9 дополняются начальным нулемzzzСмещение часового пояса в часах и минутах:Разделитель для составляющих значения времени/Разделитель для составляющих значения даты%fmtСтандартный формат, соответствующий спецификатору формата fmt
Глядя на табл. 22.8, можно заметить, что символы-заполнители d, f, g, m, M, s и tвыполняют ту же функцию, что и аналогичные символы-заполнители из табл. 22.7.Вообще говоря, если один из этих символов указывается отдельно, то он интерпретируется как спецификатор формата. В противном случае он считается символом-заполнителем. Поэтому если требуется указать несколько таких символов отдельно,но интерпретировать их как символы-заполнители, то перед каждым из них следуетпоставить знак %.
В приведенном ниже примере программы демонстрируется применение нескольких форматов даты и времени.// Отформатировать дату и время, используя специальные форматы.using System;class CustomTimeAndDateFormatsDemo { static void Main() { DateTime dt = DateTime.Now; Console.WriteLine("Время: {0:hh:mm tt}", dt); Console.WriteLine("Время в 24-часовом формате: {0:HH:mm}", dt); Console.WriteLine("Дата: {0:ddd МММ dd, yyyy}", dt); Console.WriteLine("Эра: {0:gg}", dt); Console.WriteLine("Время в секундах: " + "{0:HH:mm:ss tt}", dt); Console.WriteLine("День месяца в формате m: {0:m}", dt); Console.WriteLine("Минуты в формате m: {0:%m}", dt); }}
Откройте для себя мир чтения на siteknig.com - месте, где каждая книга оживает прямо в браузере. Здесь вас уже ждёт произведение Полное руководство. С# 4.0 - Шилдт Герберт, относящееся к жанру Программирование. Никаких регистраций, никаких преград - только вы и история, доступная в полном формате. Наш литературный портал создан для тех, кто любит комфорт: хотите читать с телефона - пожалуйста; предпочитаете ноутбук - идеально! Все книги открываются моментально и представлены полностью, без сокращений и скрытых страниц. Каталог жанров поможет вам быстро найти что-то по настроению: увлекательный роман, динамичное фэнтези, глубокую классику или лёгкое чтение перед сном. Мы ежедневно расширяем библиотеку, добавляя новые произведения, чтобы вам всегда было что открыть "на потом". Сегодня на siteknig.com доступно более 200000 книг - и каждая готова стать вашей новой любимой. Просто выбирайте, открывайте и наслаждайтесь чтением там, где вам удобно.


