Г. Шилдт - С#4.0 Полное руководство (1160795), страница 165
Текст из файла (страница 165)
В приведенном ниже примере программы демонстрируется применение спецификаторов формата даты и времени. 826 Часть П. Библиотека С() В следующем примере программы воспроизводятся очень простые часы. Время обновляется каждую секунду, и каждый час компьютер издает звонок. Для получения отформатированного строкового представления времени перед его выводом в этой Программе используется метод ТФЯСгтпо () из структуры РагеТЕюе.
Через каждый час символ звукового предупреждающего сигнала присоединяется к отформатированной строке, представляющей время, в результате чего звенит звонок. // Пример простых часов. вятич Яувгею) с1авя 51юр1ес1осК ( ягаптс чово Мати() ( ЯггьпО 1пс яесопбвг ОасеТЕюе бп = ОапеТЕие.конг яесопбя = бс.зесопбг Еог())) ( бс = ОапеТЕюе.Моиг // обновлять время через каждую секунду 1Е(яесопбя )= бС.Яесопб) весопбя = бС.Бесопб) с = бс.тоЯСгтпч("т")г ЕЕ(бг.итппсе==О аь бС.Бесопб==О) с = с + "1а") // производить звонок через каждый час Сопяо1е.нгггестпе(С)Г ) ! Формат б: Формат О: Формат С: Формат Т: Формат Е: Формат Г: Формат д: Формат С: Формат ю: Формат М: Формат о: Формат О: Формат г: Формат Го Формат я: Формат и: Формат О: Формат у: Формат У: 2/11/2010 ТЬпгябау, ГеЬгиагу 11, 2010 11:21 ЛМ 11:21:23 ЛМ ТЬптябау, ГеЬтпагу 11, 2010 11:21 ЛМ Тдпгябау, ГеЪгпагу 11, 2010 11:21:23 АМ 2/11/2010 11:21 ЛМ 2/11/2010 11."21:23 АМ ГеЬгпагу 11 ГеЬгпагу 11 2010-02-11Т11:21:23.3768153-06:00 2010-02-11Т11:21:23.3768153-06."00 ТЬп, 11 ГеЬ 2010 11:21:23 БМТ ТЬп, 11 ГеЬ 2010 11:21:23 БМТ 2010-02-11Т11:21:23 2010-02-11 11:21:232 ТЬпгябау, ГеЬгиагу 11, 2010 5:21:23 РМ ГеЬгпагу, 2010 ГеЬтчаку, 2010 Глава 22.
Строки и форматирование 827 Определение пользовательского формата даты и времени Таблица 22.8. Символы-заполнители специального формата даты и времени Символ-заполнитель Назначение День месяца в виде числа в пределах от 1 до 31 День месяца в виде числа в пределах от 1 до 31. Числовые значения в пределах от 1 до 9 дополняются начальным нулем Сокращенное название дня недели Полное название дня недели Дробная часть числового значения, обозначающего секунг Гг г й ды. Количество десятичных разрядов определяется числом заданных символов Г Эра Часы в виде числа в пределах от 1 до 12 Часы в виде числа в пределах от 1 до 12. Числовые значения в пределах от 1 до 9 дополняются начальным нулем Часы в виде числа в пределах от О до 23 Часы в виде числа в пределах от О до 23.
Числовые значения в пределах от 1 до 9 дополняются начальным нулем Часовой пояс, указываемый в часах. Для автоматической коррекции местного времени и универсального синхронизированного времени (ОТС) используется значение свойства Расеттве. Нбпгт. (этот спецификатор формата рекомендуется теперь вместо спецификаторов с символами- заполнителями з.) Минуты Минуты.
Числовые значения в пределах от 1 до 9 дополняются начальным нулем Месяц в виде числа в пределах от 1 до 12 Месяц в виде числа в пределах от 1 до 12. Числовые значения в пределах от 1 до 9 дополняются начальным нулем Сокращенное название месяца Полное название месяца Секунды Секунды. Числовые значения в пределах от 1 до 9 дополняются начальным нулем Символ "А" или "Р", обозначающий время А.М.
(до полудня) или Р.М. после полудня) соответственно Н НН Несмотря на то что стандартные спецификаторы формата даты и времени предусмотрены практически на все случаи жизни, пользователь может определить свои собственные специальные форматы.
Процесс определения пользовательских форматов даты и времени мало чем отличается от описанного выше Лля числовых типов значений. По существу, пользователь создает пример (т.е. изображение) того, как должны выглядеть выводимые данные даты и времени. Для определения пользовательского формата даты и времени служат символы-заполнители, перечисленные в табл. 22.8.
828 Часть!). Библиотека С() Окончание табл. 22.8 Символ-заполнитель Назначение А.М. или Р.М. Год в виде двух цифр, если недостаточно одной Год в виде двух цифр. Числовые значения в пределах от 1 до 9 дополняются начальным нулем Год в виде трех цифр Год в виде четырех цифр Год в виде пяти цифр Смещение часового пояса в часах Смещение часового пояса в часах. Числовые значения в пределах от 1 до 9 дополняются начальным нулем Смещение часового пояса в часах и минутах Разделитель для составляющих значения времени Разделитель для составляющих значения даты Стандартный формат, соответствующий спецификатору фор- мата г'вс У УУ УУУ УУУУ УУУУУ Е ззз I Ъ ГИГ.
Л Отформатировать дату и время, используя спзоизльные форматы. ояьпд Зуязев; о1зяя Соязовтгвеяпцпаозротвязяпево ( япзгго чо1с( Изгп() ( Озпет1вз с)Г = Пзоет1ве.ион; Сопзо1е.нтгсевьпз("Время: (О:)сьсвв ГС)", ОГ); Сопзо1з.иг1оз(дпе("Время з 24-часовом формате: (О:НН:вв)", ОГ)с Сопяо1з.иггоесгпе("Дзтз: (О:с)цс) ИИИ цс(, уууу)", с(С); Сопяо1з.иг1озЬгпз("Эрнс (Осям)", с)Г); Сопяо1е.игггеьгпе("Время з секундах: "(О:Ня:лвс:яя ГГ)", с(С); сопяо1е.хгьгзььпз("дзнь мзолцз з формате в: (Осв)", с(г)с Сопяо1е.ХггсеЬ1пе("минуты з формате вс (Осав)", с)Г); ) Глядя на табл. 22.8, можно заметить, что символы-заполнители с(, Г, 9, в, И, з и С выполняют ту же функцию, что и аналогичные символы-заполнители из табл.
22.7. Вообще говоря, если один из этих символов указывается отдельно, то он интерпретируется как спецификатор формата. В противном случае он считается символом- заполнителем. Поэтому если требуется указать несколько таких символов отдельно, но интерпретировать их как символы-заполнители, то перед каждым из них следует поставить знак Ъ. В приведенном ниже примере программы демонстрируется применение нескольких форматов даты и времени.
Глава 22. Строки и Форматирование 829 Время: 11:19 АН Время 24-часояом формате: 11:19 Дата: тпц ГеЬ 11, 2010 Эра: Л.о. Время в секундах: 11:19:40 АМ День месяца в формате ац ГеЬгцагу 11 Минуты в формате гм 19 Форматирование промежутков времени Начиная с версии 4.0, в среде .)ЧЕТ Ргагпетуог)я появилась возможность форматировать объекты типа Тфвеэрап — структуры, представляющей промежуток времени. Обьект типа Т1то эра п может быть получен самыми разными способами, в том числе и в результате вычитания одного объекта типа ВагеТзме из другого. И хотя форматировать объекты типа ТъиеЯрап приходится нечасто, о такой возможности все же стоит упомянуп вкратце. По умолчанию в структуре Тфыеэрап поддерживаются три стандартных спецификатора формата даты и времени: с, 9 и 0.
Они обозначают инвариантную форму промежутка времени, короткую и длинную форму с учетом культурной среды соответственно (последняя форма всегда включает в себя дни). Кроме того, в структуре ТьиеЯрап поддерживаются специальные спецификаторы формата даты и времени, приведенные в табл. 22.9. Вообще говоря, если один из этих спецификаторов используется в отдельности, его нужно предварить символом Ъ.
таблица 22.9. Символы-заполнители специального формата промежутка времени Символ-заполнитель Назначение б, бб, ббб, бббб, ббббб, ббббббь ббббббб Целые дни. Если указано несколько символов-заполнителей б, то отображается, по крайней мере, указанное количество цифр с начальными нулями, если требуется Часы (не считая тех, что составляют часть целого дня).
Если указано ьь, то отображаются две цифры с начальными ну- лями, если требуется Минуты (не считая тех, что составляют часть целого часа). Если указано пап, то отображеются дае цифры с начальными нулями, если требуется Секунды (не считая тех, что составляют часть целой минуты). Если указано Вз, тО ОтОбражаются дае цифры с начальными нулями, если требуется Дробные доли секунды. Количество символов-заполнителей Г обозначает точность представления, а остальные цифры отбрасываются Аробные доли секунды. Количество символов-заполнителей Г обозначает точность представления, а остальные цифры отбрасываются и конечные нули не отображаются з, 55 ГТ, ТГГ, ГТГГ, ТГГГТ, ГГГТГГ, ГГТГГТХ Г, ГГ, ГГГ, ГГГГ, ГГГГГ, ГГГГГГ, ГГГГГГГ Вот к какому результату приводит выполнение этой программы (опять же все зависит от конкретных настроек языковых и региональных параметров локализации базового программного обеспечения).
ВЗО Час(в 11. Библиотека С№ В приведенной ниже программе демонстрируется форматирование объектов типа Т№иеэрап на примере отображения времени, которое приблизительно требуется для вывода на экран 1000 целых значений в цикле Тот. // Отформатировать объект типа Тгиезрап. пеапч Бувпеьи с1авв Тьвезрапоеио вгадгс чогс( Мага() ( Оапет1ие втатб = ОапеТгие.эон4 // Вывести числа от 1 до 1000. гог(1пс 1 = 1) 1 <= 10007 1т+) Сопво1е.иггбе(1 + " "): 1№((1 Ъ 10) == 0) Сопво1е.итгсеъьпе()7 ) Сопво1е.иглпепгпе() ОагеТьее епо = ОагеТТие.нон; Тьиезрап арап = епс( — агаты Сопво1е.игьтеььпе("Время выполнения: (О:с)", арап)7 Сопво1е.Итьтеъьпе("Время выполнения: (Оса)", арап); Сопво1е.ИгьгеЬ1пе("Время выполнения: (Ока)", арап); сопво1е.иг1сеььпе("Время выполнения: 0.(0:ггг) секунды", арап); Выполнение этой программы приводит к следующему результату, который и в этом случае зависит от конкретных настроек языковых и региональных параметров локализации базового программного обеспечения, а также от загрузки системы задачами и ее быстродействия.