Программирование C#, Java, Net - фото

Метод String.Format для DateTime (c#)


Оцените данную статью

В данной обзорной статье вашему вниманию будет предоставлены примеры форматирования дат и времени (DateTime), используя метод String.Format языка программирования c#. Будут рассмотрены как пользовательское, так и стандартное форматирование. Если коротко, то пользовательское форматирование — это когда в строке содержится более одного символа, включая пробелы. Остальное является стандартным форматирование. Не пугайтесь, далее на примерах вы поймете, где какой тип форматирования.

Пользовательское форматирование даты и времени (DateTime)

Рассмотрим следующие пользовательские спецификаторы формата:

  1. y год
  2. M месяц
  3. d день
  4. h часы от 1 до 12 (12часовой формат)
  5. H часы от 0 до 23 (24часовой формат)
  6. m минуты
  7. s секунды
  8. f доли секунды
  9. F доли секунды(завершающие нули не отображаются)
  10. t до полудня / после полудня (P.M. / A.M.)
  11. z тайм зона

Примеры использования:

  1. //создадим дату 2012-01-18 22:13:11.059
  2. DateTime myDate =new DateTime(2012, 1, 18, 22, 13, 11, 059);
  3.  
  4. String.Format(«{0:y yy yyy yyyy}», myDate);  // «12 12 2012 2012»  год
  5. String.Format(«{0:M MM MMM MMMM}», myDate);  // «1 01 янв Январь»  месяц
  6. String.Format(«{0:d dd ddd dddd}», myDate);  // «18 18 Ср среда»   день
  7. String.Format(«{0:h hh H HH}»,     myDate);  // «10 10 22 22»      часы 12\24
  8. String.Format(«{0:m mm}»,          myDate);  // «13 13»            минуты
  9. String.Format(«{0:s ss}»,          myDate);  // «11 11»            секунды
  10. String.Format(«{0:f ff fff ffff}», myDate);  // «0 05 059 0590»    доли секунды
  11. String.Format(«{0:F FF FFF FFFF}», myDate);  // «05 059 059»       без нулей
  12. String.Format(«{0:t tt}»,          myDate);  // «P PM»             до\после полудня
  13. String.Format(«{0:z zz zzz}»,      myDate);  // «+3 +03 +03:00»    тайм зона

Так же можно использовать разделители для даты ( / ) и времени ( : ). Эти разделители будут отличаться в зависимости от текущего языка и региональных настроек вашей операционной системы.Они заданы в DateTimeForma­tInfo.DateSepa­rator (для даты) и в DateTimeForma­tInfo.TimeSepa­rator (для времени). Посмотрим на следующий кусок кода:

  1. Console.WriteLine( String.Format(CultureInfo.CreateSpecificCulture(«ru-RU»),«{0:d/M/yyyy HH:mm:ss}», myDate) );
  2. Console.WriteLine( String.Format(CultureInfo.CreateSpecificCulture(«en-US»), «{0:d/M/yyyy HH:mm:ss}», myDate) );
  3.  
  4. Console.ReadKey();

Для первой строки, где указан русский язык, будет выведено:

  1. //   18.1.2012 22:13:11

Для второй (английский язык) — мы увидим:

  1. //   18/1/2012 22:13:11

Рассмотрим примеры пользовательского форматирования даты и времени(DateTime):

  1. using System.Globalization;
  2. //….
  3. DateTime myDate = new DateTime(2010, 1, 5, 7, 8, 9, 059);
  4.  
  5. //    цифры месяца\дня с\без начального нуля
  6. Console.WriteLine(String.Format(«{0:M/d/yyyy}», myDate));                     //1.5.2010
  7. Console.WriteLine(String.Format(«{0:MM/dd/yyyy}», myDate));                //01.05.2010
  8.  
  9. //    2 или 4 цифры для года
  10. Console.WriteLine(String.Format(«{0:MM/dd/yy}», myDate));                    //01.05.10
  11. Console.WriteLine(String.Format(«{0:MM/dd/yyyy}», myDate));                       //01.05.2010 
  12.  
  13. //    день\месяц символами
  14. Console.WriteLine(String.Format(«{0:ddd, MMM d, yyyy}», myDate));       //Вт, янв 5, 2010
  15. Console.WriteLine(String.Format(«{0:dddd, MMMM d, yyyy}»,myDate));   //вторник, января 5, 2010  
  16.                
  17. Console.ReadKey();

Стандартное DateTime форматирование

В классе DateTimeFormatInfo определены стандартные шаблоны для различных языков и их региональных настроек. Получить доступ к нему для определенной культуры (CultureInfo) можно например так:

  1. DateTimeFormatInfo fInfo2 = CultureInfo.CurrentCulture.DateTimeFormat;
  2. DateTimeFormatInfo fInfo1 = CultureInfo.InvariantCulture.DateTimeFormat;

К примеру свойство ShortTimePattern данного класса — это строка, содержащая в себе значения h:mm tt для en-US и HH:mm для de-DE культуры.

Рассмотрим таблицу, демонстрирующию различные шаблоны в DateTimeForma­tInfo и их значения для en-US культуры. Первый столбец описывает спецификаторы формата для String.Format метода, второй — свойство класса DateTimeFormatInfo, третий — значение шаблона для культуры en-US:

Следующий пример демонстрирует стандартные спецификаторы формата в методе String.Format и результирующие строки:

  1. DateTime myDate = new DateTime(2010, 1, 5, 7, 8, 9, 059);
  2.  
  3. String.Format(«{0:t}», myDate);     // «7:08 AM»                            ShortTime
  4. String.Format(«{0:d}», myDate);     // «05.01.2010»                         ShortDate
  5. String.Format(«{0:T}», myDate);     // «7:08:09 AM»                         LongTime
  6. String.Format(«{0:D}», myDate);     // «5 января 2010 г.»                   LongDate
  7. String.Format(«{0:f}», myDate);     // «5 января 2010 г. 7:08 AM»           LongDate+ShortTime
  8. String.Format(«{0:F}», myDate);     // «5 января 2010 г. 7:08:09 AM»        FullDateTime
  9. String.Format(«{0:g}», myDate);     // «05.01.2010 7:08 AM»                 ShortDate+ShortTime
  10. String.Format(«{0:G}», myDate);     // «05.01.2010 7:08:09 AM»              ShortDate+LongTime
  11. String.Format(«{0:m}», myDate);     // «января 05»                          MonthDay
  12. String.Format(«{0:y}», myDate);     // «Январь 2010»                        YearMonth
  13. String.Format(«{0:r}», myDate);     // «Tue, 05 Jan 2010 07:08:09 GMT»      RFC1123
  14. String.Format(«{0:s}», myDate);     // «2010-01-05T07:08:09»                SortableDateTime
  15. String.Format(«{0:u}», myDate);     //»2010-01-05 07:08:09Z»      UniversalSortableDateTime

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *