Yurijnd.com
Четверг, 06.02.2025, 19:48
Меню сайта

Вход на сайт

Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Статистика

    Онлайн всего: 3
    Гостей: 3
    Пользователей: 0

     

    Форматирующие строки

     

    Если вы хотите, чтобы разрабатываемые классы были дружественными к пользователю, они должны предлагать средства для отображения своих строковых представлений в любом из форматов, которые могут понадобиться пользователю. В исполняющей среде .NET определен стандартный способ достижения этого — интерфейс IFormattable. Описание способа добавления этого важного свойства к пользовательским классам и структурам и представляет собой тему настоящей статьи.

    Начнем с рассмотрения того, что происходит, когда форматная строка применяется к примитивному типу, а отсюда станет ясно, как следует включать спецификаторы формата для пользовательских классов и структур:

     
    decimal d = 12.05667m;
    int i = 5;
    
    Console.WriteLine("Значение переменной d = {0:C}, а i = {1}",d,i);

    Сама строка формата содержит большую часть отображаемого текста, но всякий раз, когда в нее должно быть вставлено значение переменной, в фигурных скобках указывается индекс. В фигурные скобки может быть включена и другая информация, относящаяся к формату данного элемента, например, та, что описана ниже:

    • Количество символов, которое займет представление элемента, снабженное префиксом-запятой. Отрицательное число указывает, что элемент должен быть выровнен по левой границе, а положительное — по правой. Если элемент на самом деле занимает больше символов, чем ему отведено форматом, он отображается полностью.

    • Спецификатор формата предваряется двоеточием. Это указывает, каким образом необходимо отформатировать элемент. Например, можно указать, должно ли число быть форматировано как денежное значение, либо его следует отобразить в научной нотации.

    В следующей таблице перечислены часто используемые спецификаторы формата для числовых типов:

    Спецификаторы формата для чисел
    Спецификатор Применяется к Значение Пример
    C Числовым типам Символ местной валюты $835.50 (США)
    £835.50 (Великобритания) 835.50р.(Россия)
    D Только к целочисленным типам Обычное целое 835
    E Числовым типам Экспоненциальная нотация 8.35Е+002
    F Числовым типам С фиксированной десятичной точкой 835.50
    G Числовым типам Обычные числа 835.5
    N Числовым типам Формат чисел, принятый в данной местности 4,384.50 (Великобритания/США)
    4 384,50 (континентальная Европа)
    P Числовым типам Процентная нотация 835,000.00%
    X Только к целочисленным типам Шестнадцатеричный формат 1a1f
     

    Стоит отметить, что полный список спецификаторов формата значительно длинее, поскольку другие типы данных добавляют собственные спецификаторы.

    Форматирование даты и времени

    Помимо числовых значений, форматированию нередко подлежит и другой тип данных: DateTime. Это структура, представляющая дату и время. Значения даты и времени могут отображаться самыми разными способами.

    Форматирование даты и времени осуществляется с помощью спецификаторов формата. Конкретное представление даты и времени может отличаться в силу региональных и языковых особенностей и поэтому зависит от настройки параметров культурной среды. Спецификаторы формата даты и времени сведены в следующей таблице:

    Спецификаторы формата для дат
    Спецификатор Формат
    D Дата в длинной форме
    d Дата в краткой форме
    F Дата и время в длинной форме
    f Дата и время в краткой форме
    G Дата — в краткой форме, время — в длинной
    g Дата и время — в краткой форме
    М Месяц и день
    m То же, что и М
    O Формат даты и времени, включая часовой пояс. Строка, составленная в формате О, может быть преобразована обратно в эквивалентную форму вывода даты и времени. Это так называемый "круговой" формат
    R Дата и время в стандартной форме по Гринвичу
    s Сортируемый формат представления даты и времени
    T Время в длинной форме
    t Время в краткой форме
    U Длинная форма универсального представления даты и времени; время отображается как универсальное синхронизированное время (UTC)
    u Краткая форма универсального представления даты и времени
    Y Месяц и год
     

    В приведенном ниже примере программы демонстрируется применение спецификаторов формата даты и времени:

     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ConsoleApplication1
    {
     class Program
     {
     static void Main(string[] args)
     {
     DateTime myDate = DateTime.Now;
     Console.WriteLine("Дата в формате d: {0:d}\nВ формате D: {0:D}",myDate);
     Console.WriteLine("Дата в формате f: {0:f}\nВ формате F: {0:F}", myDate);
     Console.WriteLine("Дата в формате g: {0:g}\nВ формате G: {0:G}", myDate);
     Console.WriteLine("Дата в формате m: {0:m}\nВ формате M: {0:M}", myDate);
     Console.WriteLine("Дата в формате r: {0:r}\nВ формате R: {0:R}", myDate);
     Console.WriteLine("Дата в формате o: {0:o}\nВ формате O: {0:O}", myDate);
     Console.WriteLine("Дата в формате s: {0:s}", myDate);
     Console.WriteLine("Дата в формате t: {0:t}\nВ формате T: {0:T}", myDate);
     Console.WriteLine("Дата в формате u: {0:u}\nВ формате U: {0:U}", myDate);
     Console.WriteLine("Дата в формате y: {0:y}\nВ формате Y: {0:Y}", myDate);
    
     Console.ReadLine();
     }
     }
    }
    Разный формат даты и времени в C#
    Copyright MyCorp © 2025
    Сделать бесплатный сайт с uCoz