Строки настраиваемых форматов даты и времени

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

Совет

Вы можете загрузить служебную программу форматирования — приложение Windows Forms для .NET Core, позволяющее применять строки формата к значениям даты и времени и числовым значениям и отображающее результирующую строку. Исходный код доступен для C# и Visual Basic.

Строки настраиваемого формата даты и времени могут использоваться как со значением DateTime, так и со значением DateTimeOffset.

Примечание

Некоторые примеры C# в этой статье выполняются во встроенном средстве выполнения кода и на тестовой площадке Try.NET. Нажмите на кнопку Выполнить, чтобы выполнить пример в интерактивном окне. После выполнения кода вы можете изменить его и выполнить измененный код, снова нажав на кнопку Выполнить. Либо в интерактивном окне выполняется измененный код, либо, если компиляция завершается с ошибкой, в интерактивном окне отображаются все сообщения об ошибках компилятора C#.

Местный часовой пояс площадки и средства запуска встроенного кода Try.NET указан в формате UTC. Это может повлиять на работу и выходные данные примеров, иллюстрирующих DateTime, DateTimeOffset, типы TimeZoneInfo и их члены.

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

DateTime thisDate1 = new DateTime(2011, 6, 10);
Console.WriteLine("Today is " + thisDate1.ToString("MMMM dd, yyyy") + ".");

DateTimeOffset thisDate2 = new DateTimeOffset(2011, 6, 10, 15, 24, 16,
                                              TimeSpan.Zero);
Console.WriteLine("The current date and time: {0:MM/dd/yy H:mm:ss zzz}",
                   thisDate2);
// The example displays the following output:
//    Today is June 10, 2011.
//    The current date and time: 06/10/11 15:24:16 +00:00
Dim thisDate1 As Date = #6/10/2011#
Console.WriteLine("Today is " + thisDate1.ToString("MMMM dd, yyyy") + ".")

Dim thisDate2 As New DateTimeOffset(2011, 6, 10, 15, 24, 16, TimeSpan.Zero)
Console.WriteLine("The current date and time: {0:MM/dd/yy H:mm:ss zzz}",
                  thisDate2)
' The example displays the following output:
'    Today is June 10, 2011.
'    The current date and time: 06/10/11 15:24:16 +00:00

В операциях синтаксического анализа пользовательские строки формата даты и времени можно использовать с методами DateTime.ParseExact, DateTime.TryParseExact, DateTimeOffset.ParseExact и DateTimeOffset.TryParseExact. Чтобы операция синтаксического анализа прошла успешно, эти методы требуют, чтобы входная строка строго соответствовала конкретному шаблону. В следующем примере демонстрируется вызов метода DateTimeOffset.ParseExact(String, String, IFormatProvider) для анализа даты, которая должна включать в себя указание дня, месяца и года из двух цифр.

using System;
using System.Globalization;

public class Example1
{
    public static void Main()
    {
        string[] dateValues = { "30-12-2011", "12-30-2011",
                              "30-12-11", "12-30-11" };
        string pattern = "MM-dd-yy";
        DateTime parsedDate;

        foreach (var dateValue in dateValues)
        {
            if (DateTime.TryParseExact(dateValue, pattern, null,
                                      DateTimeStyles.None, out parsedDate))
                Console.WriteLine("Converted '{0}' to {1:d}.",
                                  dateValue, parsedDate);
            else
                Console.WriteLine("Unable to convert '{0}' to a date and time.",
                                  dateValue);
        }
    }
}
// The example displays the following output:
//    Unable to convert '30-12-2011' to a date and time.
//    Unable to convert '12-30-2011' to a date and time.
//    Unable to convert '30-12-11' to a date and time.
//    Converted '12-30-11' to 12/30/2011.
Imports System.Globalization

Module Example
    Public Sub Main()
        Dim dateValues() As String = {"30-12-2011", "12-30-2011",
                                        "30-12-11", "12-30-11"}
        Dim pattern As String = "MM-dd-yy"
        Dim parsedDate As Date

        For Each dateValue As String In dateValues
            If DateTime.TryParseExact(dateValue, pattern, Nothing,
                                      DateTimeStyles.None, parsedDate) Then
                Console.WriteLine("Converted '{0}' to {1:d}.",
                                  dateValue, parsedDate)
            Else
                Console.WriteLine("Unable to convert '{0}' to a date and time.",
                                  dateValue)
            End If
        Next
    End Sub
End Module
' The example displays the following output:
'    Unable to convert '30-12-2011' to a date and time.
'    Unable to convert '12-30-2011' to a date and time.
'    Unable to convert '30-12-11' to a date and time.
'    Converted '12-30-11' to 12/30/2011.

В следующей таблице приведены настраиваемые описатели формата даты и времени с примерами строк, формируемых каждым описателем формата. По умолчанию результирующие строки отражают соглашения о форматировании для языка и региональных параметров en-US. Если конкретный описатель формата создает локализованную строку, то в примере также указываются язык и региональные параметры, для которых применяется полученная строка. Дополнительные сведения об использовании настраиваемых строк формата даты и времени см. в подразделе Примечания.

Описатель формата Описание Примеры
"d" День месяца, в диапазоне от 1 до 31.

Дополнительная информация: Настраиваемый описатель формата "d".
2009-06-01T13:45:30 -> 1

2009-06-15T13:45:30 -> 15
"dd" День месяца, в диапазоне от 01 до 31.

Дополнительная информация: Настраиваемый описатель формата "dd".
2009-06-01T13:45:30 -> 01

2009-06-15T13:45:30 -> 15
"ddd" Сокращенное название дня недели.

Дополнительная информация: Настраиваемый описатель формата "ddd".
2009-06-15T13:45:30 -> Mon (en-US)

2009-06-15T13:45:30 -> Пн (ru-RU)

2009-06-15T13:45:30 -> lun. (fr-FR)
"dddd" Полное название дня недели.

Дополнительная информация: Настраиваемый описатель формата "dddd".
2009-06-15T13:45:30 -> понедельник (en-US)

2009-06-15T13:45:30 -> понедельник (ru-RU)

2009-06-15T13:45:30 -> lundi (fr-FR)
"f" Десятые доли секунды в значении даты и времени.

Дополнительная информация: Настраиваемый описатель формата "f".
2009-06-15T13:45:30.6170000 -> 6

2009-06-15T13:45:30.05 -> 0
"ff" Сотые доли секунды в значении даты и времени.

Дополнительная информация: Настраиваемый описатель формата "ff".
2009-06-15T13:45:30.6170000 -> 61

2009-06-15T13:45:30.0050000 -> 00
"fff" Тысячные доли секунды в значении даты и времени.

Дополнительная информация: Настраиваемый описатель формата "fff".
15.06.2009 13:45:30.617 -> 617

6.15.2009 13:45:30.0005 -> 000
"ffff" Десятитысячные доли секунды в значении даты и времени.

Дополнительная информация: Настраиваемый описатель формата "ffff".
2009-06-15T13:45:30.6175000 -> 61755

2009-06-15T13:45:30.0000500 -> 00000
"fffff" Стотысячные доли секунды в значении даты и времени.

Дополнительная информация: Настраиваемый описатель формата "fffff".
2009-06-15T13:45:30.6175400 -> 61754

6.15.2009 13:45:30.000005 -> 00000
"ffffff" Миллионные доли секунды в значении даты и времени.

Дополнительная информация: Настраиваемый описатель формата "ffffff".
2009-06-15T13:45:30.6175420 -> 617542

2009-06-15T13:45:30.000005 -> 0000000
"fffffff" Десятимиллионные доли секунды в значении даты и времени.

Дополнительная информация: Настраиваемый описатель формата "fffffff".
2009-06-15T13:45:30.6175425 -> 6175425

2009-06-15T13:45:30.0001150 -> 0001150
"F" Если ненулевое значение, то десятые доли секунды в значении даты и времени.

Дополнительная информация: Настраиваемый описатель формата "F".
2009-06-15T13:45:30.6170000 -> 6

2009-06-15T13:45:30.0500000 -> (без выходных данных)
"FF" Если ненулевое значение, то сотые доли секунды в значении даты и времени.

Дополнительная информация: Настраиваемый описатель формата "FF".
2009-06-15T13:45:30.6170000 -> 61

2009-06-15T13:45:30.0050000 -> (без выходных данных)
"FFF" Если ненулевое значение, то тысячные доли секунды в значении даты и времени.

Дополнительная информация: Настраиваемый описатель формата "FFF".
2009-06-15T13:45:30.6170000 -> 617

2009-06-15T13:45:30.0005000 -> (без выходных данных)
"FFFF" Если ненулевое значение, то десятитысячные доли секунды в значении даты и времени.

Дополнительная информация: Настраиваемый описатель формата "FFFF".
2009-06-15T13:45:30.5275000 -> 52755

2009-06-15T13:45:30.0000500 -> (без выходных данных)
"FFFFF" Если ненулевое значение, то стотысячные доли секунды в значении даты и времени.

Дополнительная информация: Настраиваемый описатель формата "FFFFF".
2009-06-15T13:45:30.6175400 -> 61754

2009-06-15T13:45:30.0000050 -> (без выходных данных)
"FFFFFF" Если ненулевое значение, то миллионные доли секунды в значении даты и времени.

Дополнительная информация: Настраиваемый описатель формата "FFFFFF".
2009-06-15T13:45:30.6175420 -> 617542

2009-06-15T13:45:30.0000005 -> (без выходных данных)
"FFFFFFF" Если ненулевое значение, то десятимиллионные доли секунды в значении даты и времени.

Дополнительная информация: Настраиваемый описатель формата "FFFFFFF".
2009-06-15T13:45:30.6175425 -> 6175425

2009-06-15T13:45:30.0001150 -> 000115
"g", "gg" Период или эра.

Дополнительная информация: Настраиваемый описатель формата "g" или "gg".
2009-06-15T13:45:30.6170000 -> A.D.
"h" Час в 12-часовом формате от 1 до 12.

Дополнительная информация: Настраиваемый описатель формата "h".
2009-06-15T01:45:30 -> 1

2009-06-15T13:45:30 -> 1
"hh" Час в 12-часовом формате от 01 до 12.

Дополнительная информация: Настраиваемый описатель формата "hh".
2009-06-15T01:45:30 -> 01

2009-06-15T13:45:30 -> 01
"H" Час в 24-часовом формате от 0 до 23.

Дополнительная информация: Настраиваемый описатель формата "H".
2009-06-15T01:45:30 -> 1

2009-06-15T13:45:30 -> 13
"HH" Час в 24-часовом формате от 00 до 23.

Дополнительная информация: Настраиваемый описатель формата "HH".
2009-06-15T01:45:30 -> 01

2009-06-15T13:45:30 -> 13
"K" Данные о часовом поясе.

Дополнительная информация: Настраиваемый описатель формата "K".
Со значениями DateTime:

2009-06-15T13:45:30, Kind Unspecified ->

2009-06-15T13:45:30, Kind Utc -> Z

2009-06-15T13:45:30, Kind Local -> -07:00 (зависит от параметров локального компьютера)

Со значениями DateTimeOffset:

2009-06-15T01:45:30-07:00 --> -07:00

2009-06-15T08:45:30+00:00 --> +00:00
"m" Минуты, в диапазоне от 0 до 59.

Дополнительная информация: Настраиваемый описатель формата "m".
2009-06-15T01:09:30 -> 9

2009-06-15T13:29:30 -> 29
"mm" Минуты, в диапазоне от 00 до 59.

Дополнительная информация: Настраиваемый описатель формата "mm".
2009-06-15T01:09:30 -> 09

2009-06-15T01:45:30 -> 45
"M" Месяц, в диапазоне от 1 до 12.

Дополнительная информация: Настраиваемый описатель формата "M".
2009-06-15T13:45:30 -> 6
"MM" Месяц, в диапазоне от 01 до 12.

Дополнительная информация: Настраиваемый описатель формата "MM".
2009-06-15T13:45:30 -> 06
"MMM" Сокращенное название месяца.

Дополнительная информация: Настраиваемый описатель формата "MMM".
2009-06-15T13:45:30 -> Jun (en-US)

2009-06-15T13:45:30 -> juin (fr-FR)

2009-06-15T13:45:30 -> Jun (zu-ZA)
"MMMM" Полное название месяца.

Дополнительная информация: Настраиваемый описатель формата "MMMM".
2009-06-15T13:45:30 -> июнь (en-US)

2009-06-15T13:45:30 -> juni (da-DK)

2009-06-15T13:45:30 -> uJuni (zu-ZA)
"s" Секунды, в диапазоне от 0 до 59.

Дополнительная информация: Настраиваемый описатель формата "s".
2009-06-15T13:45:09 -> 9
"ss" Секунды, в диапазоне от 00 до 59.

Дополнительная информация: Настраиваемый описатель формата "ss".
2009-06-15T13:45:09 -> 09
"t" Первый символ указателя AM/PM (до полудня/после полудня).

Дополнительная информация: Настраиваемый описатель формата "t".
2009-06-15T13:45:30 -> P (en-US)

2009-06-15T13:45:30 -> 午 (ja-JP)

2009-06-15T13:45:30 -> (fr-FR)
"tt" Указатель AM/PM (до полудня/после полудня).

Дополнительная информация: Настраиваемый описатель формата "tt".
2009-06-15T13:45:30 -> PM (en-US)

2009-06-15T13:45:30 -> 午後 (ja-JP)

2009-06-15T13:45:30 -> (fr-FR)
"y" Год, в диапазоне от 0 до 99.

Дополнительная информация: Настраиваемый описатель формата "y".
0001-01-01T00:00:00 -> 1

0900-01-01T00:00:00 -> 0

1900-01-01T00:00:00 -> 0

2009-06-15T13:45:30 -> 9

2019-06-15T13:45:30 -> 19
"yy" Год, в диапазоне от 00 до 99.

Дополнительная информация: Настраиваемый описатель формата "yy".
0001-01-01T00:00:00 -> 01

0900-01-01T00:00:00 -> 00

1900-01-01T00:00:00 -> 00

2019-06-15T13:45:30 -> 19
"yyy" Год в виде как минимум трех цифр.

Дополнительная информация: Настраиваемый описатель формата "yyy".
0001-01-01T00:00:00 -> 001

0900-01-01T00:00:00 -> 900

1900-01-01T00:00:00 -> 1900

2009-06-15T13:45:30 -> 2009
"yyyy" Год в виде четырехзначного числа.

Дополнительная информация: Настраиваемый описатель формата "yyyy".
0001-01-01T00:00:00 -> 0001

0900-01-01T00:00:00 -> 0900

1900-01-01T00:00:00 -> 1900

2009-06-15T13:45:30 -> 2009
"yyyyy" Год в виде пятизначного числа.

Дополнительная информация: Настраиваемый описатель формата "yyyyy".
0001-01-01T00:00:00 -> 00001

2009-06-15T13:45:30 -> 02009
"z" Часовой сдвиг от времени в формате UTC (универсального времени), без нулей в начале.

Дополнительная информация: Настраиваемый описатель формата "z".
2009-06-15T13:45:30-07:00 -> -7
"zz" Часовой сдвиг от времени в формате UTC (универсального времени) с нулями в начале для значений из одной цифры.

Дополнительная информация: Настраиваемый описатель формата "zz".
2009-06-15T13:45:30-07:00 -> -07
"zzz" Сдвиг в часах и минутах от времени в формате UTC (универсального времени).

Дополнительная информация: Настраиваемый описатель формата "zzz".
2009-06-15T13:45:30-07:00 -> -07:00
":" Разделитель компонентов времени.

Дополнительная информация: Настраиваемый описатель формата ":".
2009-06-15T13:45:30 -> : (en-US)

2009-06-15T13:45:30 -> . (it-IT)

2009-06-15T13:45:30 -> : (ja-JP)
"/" Разделитель компонентов даты.

Дополнительные сведения: Настраиваемый описатель формата "/".
2009-06-15T13:45:30 -> / (en-US)

2009-06-15T13:45:30 -> (ar-DZ)

2009-06-15T13:45:30 -> . (tr-TR)
string

string
Буквенный разделитель строк.

Дополнительная информация: Символьные литералы.
2009-06-15T13:45:30 ("arr:" h:m t) -> arr: 1:45 P

2009-06-15T13:45:30 ('arr:' h:m t) -> arr: 1:45 P
% Задает следующий символ в качестве настраиваемого описателя формата.

Дополнительные сведения см. в подразделе Использование единичных настраиваемых описателей формата.
2009-06-15T13:45:30 (%h) -> 1
\ Escape-символ.

Дополнительная информация: Символьные литералы и Использование escape-символа.
2009-06-15T13:45:30 (h \h) -> 1 ч
Любой другой знак Символ копируется в результирующую строку без изменений.

Дополнительная информация: Символьные литералы.
2009-06-15T01:45:30 (arr hh:mm t) -> arr 01:45 A

В следующих подразделах предоставляются дополнительные сведения о всех настраиваемых описателях формата даты и времени. Если не указано иное, каждый настраиваемый описатель формата даты и времени формирует одинаковое строковое представление независимо от того, используется ли он со значением DateTime или со значением DateTimeOffset.

Описатель формата "d" для дня

Настраиваемый описатель формата "d"

Настраиваемый описатель формата "d" представляет день месяца в виде числа в диапазоне от 1 до 31. День в виде одной цифры форматируется без нуля в начале.

Если описатель формата "d" используется без других настраиваемых описателей формата, то он интерпретируется как описатель "d" стандартного формата даты и времени. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

В следующем примере настраиваемый описатель формата "d" используется в нескольких строках формата.

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("d, M",
                  CultureInfo.InvariantCulture));
// Displays 29, 8

Console.WriteLine(date1.ToString("d MMMM",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays 29 August
Console.WriteLine(date1.ToString("d MMMM",
                  CultureInfo.CreateSpecificCulture("es-MX")));
// Displays 29 agosto
Dim date1 As Date = #08/29/2008 7:27:15PM#

Console.WriteLine(date1.ToString("d, M", _
                  CultureInfo.InvariantCulture))
' Displays 29, 8

Console.WriteLine(date1.ToString("d MMMM", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays 29 August
Console.WriteLine(date1.ToString("d MMMM", _
                  CultureInfo.CreateSpecificCulture("es-MX")))
' Displays 29 agosto                                                

К таблице

Настраиваемый описатель формата "dd"

Настраиваемый описатель формата "dd" представляет день месяца в виде числа в диапазоне от 01 до 31. День в виде одной цифры форматируется с нулем в начале.

В следующем примере настраиваемый описатель формата "dd" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 1, 2, 6, 30, 15);

Console.WriteLine(date1.ToString("dd, MM",
                  CultureInfo.InvariantCulture));
// 02, 01
Dim date1 As Date = #1/2/2008 6:30:15AM#

Console.WriteLine(date1.ToString("dd, MM", _
                  CultureInfo.InvariantCulture))
' 02, 01

К таблице

Настраиваемый описатель формата "ddd"

Настраиваемый описатель формата "ddd" представляет сокращенное название дня недели. Локализованное сокращенное название дня недели извлекается из свойства DateTimeFormatInfo.AbbreviatedDayNames текущей или заданной среды языка и региональных параметров.

В следующем примере описатель настраиваемый описатель формата "ddd" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("ddd d MMM",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM",
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays ven. 29 août
Dim date1 As Date = #08/29/2008 7:27:15PM#

Console.WriteLine(date1.ToString("ddd d MMM", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays ven. 29 août                                                

К таблице

Настраиваемый описатель формата "dddd"

Настраиваемый описатель формата "dddd" (плюс любое количество дополнительных описателей "d") представляет полное название дня недели. Локализованное название дня недели извлекается из свойства DateTimeFormatInfo.DayNames текущей или заданной среды языка и региональных параметров.

В следующем примере настраиваемый описатель формата "dddd" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("dddd dd MMMM",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Friday 29 August
Console.WriteLine(date1.ToString("dddd dd MMMM",
                  CultureInfo.CreateSpecificCulture("it-IT")));
// Displays venerdì 29 agosto
Dim date1 As Date = #08/29/2008 7:27:15PM#

Console.WriteLine(date1.ToString("dddd dd MMMM", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays Friday 29 August
Console.WriteLine(date1.ToString("dddd dd MMMM", _
                  CultureInfo.CreateSpecificCulture("it-IT")))
' Displays venerdì 29 agosto                                          

К таблице

Описатель формата "f" для секунд в нижнем регистре

Настраиваемый описатель формата "f"

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

Если описатель формата "f" используется без других описателей формата, то он интерпретируется как описатель "f" стандартного формата даты и времени. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

При использовании описателей формата "f" в составе строки формата, передаваемой методу ParseExact, TryParseExact, ParseExact или TryParseExact, количество описателей формата "f" указывает на количество наиболее значимых цифр секунд, которые должны присутствовать для обеспечения успешного анализа строки.

В следующем примере настраиваемый описатель формата "f" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Dim date1 As New Date(2008, 8, 29, 19, 27, 15, 018)
Dim ci As CultureInfo = CultureInfo.InvariantCulture

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci))
' Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci))
' Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci))
' Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci))
' Displays 07:27:15.018

К таблице

Настраиваемый описатель формата "ff"

Настраиваемый описатель формата "ff" представляет две наиболее значимые цифры секунд, то есть сотые доли секунды в значении даты и времени.

В следующем примере настраиваемый описатель формата "ff" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Dim date1 As New Date(2008, 8, 29, 19, 27, 15, 018)
Dim ci As CultureInfo = CultureInfo.InvariantCulture

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci))
' Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci))
' Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci))
' Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci))
' Displays 07:27:15.018

К таблице

Настраиваемый описатель формата "fff"

Настраиваемый описатель формата "fff" представляет три наиболее значимые цифры секунд, то есть миллисекунды в значении даты и времени.

В следующем примере настраиваемый описатель формата "fff" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Dim date1 As New Date(2008, 8, 29, 19, 27, 15, 018)
Dim ci As CultureInfo = CultureInfo.InvariantCulture

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci))
' Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci))
' Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci))
' Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci))
' Displays 07:27:15.018

К таблице

Настраиваемый описатель формата "ffff"

Настраиваемый описатель формата "ffff" представляет четыре наиболее значимые цифры секунд, то есть десятитысячные доли секунды в значении даты и времени.

Хотя и существует возможность отображения десятитысячных долей секунды в значении времени, это значение может не иметь особого смысла. Точность значений даты и времени зависит от разрешения системных часов. В операционных системах Windows NT начиная с версии 3.5 и Windows Vista разрешение часов приблизительно соответствует 10–15 миллисекундам.

К таблице

Настраиваемый описатель формата "fffff"

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

Хотя и существует возможность отображения стотысячных долей секунды в значении времени, это значение может не иметь особого смысла. Точность значений даты и времени зависит от разрешения системных часов. В операционной системе Windows NT начиная с версии 3.5 и Windows Vista разрешение часов приблизительно соответствует 10–15 миллисекундам.

К таблице

Настраиваемый описатель формата "ffffff"

Настраиваемый описатель формата "fffff" представляет шесть наиболее значимых цифр секунд, то есть миллионные доли секунды в значении даты и времени.

Хотя и существует возможность отображения миллионных долей секунды, это значение может не иметь особого смысла. Точность значений даты и времени зависит от разрешения системных часов. В операционной системе Windows NT начиная с версии 3.5 и Windows Vista разрешение часов приблизительно соответствует 10–15 миллисекундам.

К таблице

Настраиваемый описатель формата "fffffff"

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

Хотя и существует возможность отображения десятимиллионных долей секунды, это значение может не иметь особого смысла. Точность значений даты и времени зависит от разрешения системных часов. В операционной системе Windows NT начиная с версии 3.5 и Windows Vista разрешение часов приблизительно соответствует 10–15 миллисекундам.

К таблице

Описатель формата "F" для секунд в верхнем регистре

Настраиваемый описатель формата "F"

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

Если описатель формата "F" используется без других описателей формата, то он интерпретируется как описатель "F" стандартного формата даты и времени. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

Число описателей формата "F", используемых с методом ParseExact, TryParseExact, ParseExact или TryParseExact, задает максимальное количество наиболее значимых цифр секунд, которые должны присутствовать для успешного анализа строки.

В следующем примере настраиваемый описатель формата "F" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Dim date1 As New Date(2008, 8, 29, 19, 27, 15, 018)
Dim ci As CultureInfo = CultureInfo.InvariantCulture

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci))
' Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci))
' Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci))
' Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci))
' Displays 07:27:15.018

К таблице

Настраиваемый описатель формата "FF"

Настраиваемый описатель формата "FF" представляет две наиболее значимые цифры секунд, то есть сотые доли секунды в значении даты и времени. Конечные нули не отображаются. Ничего не отображается, если две значимые цифры равны нулю, и в этом случае десятичная точка, следующая за числом секунд, также не отображается.

В следующем примере настраиваемый описатель формата "FF" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Dim date1 As New Date(2008, 8, 29, 19, 27, 15, 018)
Dim ci As CultureInfo = CultureInfo.InvariantCulture

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci))
' Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci))
' Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci))
' Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci))
' Displays 07:27:15.018

К таблице

Настраиваемый описатель формата "FFF"

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

В следующем примере настраиваемый описатель формата "FFF" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15, 18);
CultureInfo ci = CultureInfo.InvariantCulture;

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci));
// Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci));
// Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci));
// Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci));
// Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci));
// Displays 07:27:15.018
Dim date1 As New Date(2008, 8, 29, 19, 27, 15, 018)
Dim ci As CultureInfo = CultureInfo.InvariantCulture

Console.WriteLine(date1.ToString("hh:mm:ss.f", ci))
' Displays 07:27:15.0
Console.WriteLine(date1.ToString("hh:mm:ss.F", ci))
' Displays 07:27:15
Console.WriteLine(date1.ToString("hh:mm:ss.ff", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.FF", ci))
' Displays 07:27:15.01
Console.WriteLine(date1.ToString("hh:mm:ss.fff", ci))
' Displays 07:27:15.018
Console.WriteLine(date1.ToString("hh:mm:ss.FFF", ci))
' Displays 07:27:15.018

К таблице

Настраиваемый описатель формата "FFFF"

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

Хотя и существует возможность отображения десятитысячных долей секунды в значении времени, это значение может не иметь особого смысла. Точность значений даты и времени зависит от разрешения системных часов. В операционной системе Windows NT начиная с версии 3.5 и Windows Vista разрешение часов приблизительно соответствует 10–15 миллисекундам.

К таблице

Настраиваемый описатель формата "FFFFF"

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

Хотя и существует возможность отображения стотысячных долей секунды в значении времени, это значение может не иметь особого смысла. Точность значений даты и времени зависит от разрешения системных часов. В операционной системе Windows NT начиная с версии 3.5 и Windows Vista разрешение часов приблизительно соответствует 10–15 миллисекундам.

К таблице

Настраиваемый описатель формата "FFFFFF"

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

Хотя и существует возможность отображения миллионных долей секунды, это значение может не иметь особого смысла. Точность значений даты и времени зависит от разрешения системных часов. В операционной системе Windows NT начиная с версии 3.5 и Windows Vista разрешение часов приблизительно соответствует 10–15 миллисекундам.

К таблице

Настраиваемый описатель формата "FFFFFFF"

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

Хотя и существует возможность отображения десятимиллионных долей секунды, это значение может не иметь особого смысла. Точность значений даты и времени зависит от разрешения системных часов. В операционной системе Windows NT начиная с версии 3.5 и Windows Vista разрешение часов приблизительно соответствует 10–15 миллисекундам.

К таблице

Описатель формата "g" для эры

Настраиваемый описатель формата "g" или "gg"

Настраиваемые описатели формата "g" или "gg" (плюс любое количество дополнительных описателей "g") представляют период или эру, например A.D. Операция форматирования игнорирует этот описатель, если дата форматирования не имеет связанной строки точки или эры.

Если описатель формата "g" используется без других настраиваемых описателей формата, то он интерпретируется как описатель "g" стандартного формата даты и времени. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

В следующем примере настраиваемый описатель формата "g" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(70, 08, 04);

Console.WriteLine(date1.ToString("MM/dd/yyyy g",
                  CultureInfo.InvariantCulture));
// Displays 08/04/0070 A.D.
Console.WriteLine(date1.ToString("MM/dd/yyyy g",
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays 08/04/0070 ap. J.-C.
Dim date1 As Date = #08/04/0070#

Console.WriteLine(date1.ToString("MM/dd/yyyy g", _
                  CultureInfo.InvariantCulture))
' Displays 08/04/0070 A.D.                        
Console.WriteLine(date1.ToString("MM/dd/yyyy g", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays 08/04/0070 ap. J.-C.

К таблице

Описатель формата "h" для часов в нижнем регистре

Настраиваемый описатель формата "h"

Настраиваемый описатель формата "h" представляет часы в виде числа в диапазоне от 1 до 12, то есть в 12-часовом формате, в котором полные часы отсчитываются от полуночи или от полудня. Час после полуночи неотличим от того же часа после полудня. Часы не округляются, и часы с одной цифрой форматируются без нуля в начале. Например, для времени 5:43 утра или вечера этот настраиваемый описатель формата выведет "5".

Если описатель формата "h" используется без других настраиваемых описателей формата, то он интерпретируется как описатель стандартного формата даты и времени и возникает исключение FormatException. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

В следующем примере настраиваемый описатель формата "h" используется в строке настраиваемого формата.

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1 µ
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5 µ
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1 µ                        
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1.5 µ

К таблице

Настраиваемый описатель формата "hh"

Настраиваемый описатель формата "hh" (плюс любое количество дополнительных описателей "h") представляет часы в виде числа в диапазоне от 01 до 12, то есть в 12-часовом формате, в котором полные часы отсчитываются от полуночи или от полудня. Час после полуночи неотличим от того же часа после полудня. Часы не округляются, и часы с одной цифрой форматируются с нулем в начале. Например, для времени 5:43 утра или вечера этот описатель формата выведет "05".

В следующем примере настраиваемый описатель формата "hh" используется в строке настраиваемого формата.

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01 PM
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01 du.
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01.50 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01.50 du.

К таблице

Описатель формата "H" для часов в верхнем регистре

Настраиваемый описатель формата "H"

Настраиваемый описатель формата "H" представляет часы в виде числа в диапазоне от 0 до 23, то есть в 24-часовом формате, в котором полные часы отсчитываются от полуночи, начиная с 0. Часы с одной цифрой форматируются без нуля в начале.

Если описатель формата "H" используется без других настраиваемых описателей формата, то он интерпретируется как описатель стандартного формата даты и времени и возникает исключение FormatException. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

В следующем примере настраиваемый описатель формата "H" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 1, 1, 6, 9, 1);
Console.WriteLine(date1.ToString("H:mm:ss",
                  CultureInfo.InvariantCulture));
// Displays 6:09:01
Dim date1 As Date = #6:09:01AM#
Console.WriteLine(date1.ToString("H:mm:ss", _
                  CultureInfo.InvariantCulture))
' Displays 6:09:01                        

К таблице

Настраиваемый описатель формата "HH"

Настраиваемый описатель формата "HH" (плюс любое количество дополнительных описателей "H") представляет часы в виде числа в диапазоне от 00 до 23, то есть в 24-часовом формате, в котором полные часы отсчитываются от полуночи начиная с 0. Часы с одной цифрой форматируются с нулем в начале.

В следующем примере настраиваемый описатель формата "HH" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 1, 1, 6, 9, 1);
Console.WriteLine(date1.ToString("HH:mm:ss",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01
Dim date1 As Date = #6:09:01AM#
Console.WriteLine(date1.ToString("HH:mm:ss", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01                        

К таблице

Описатель формата "K" для часового пояса

Настраиваемый описатель формата "K"

Настраиваемый описатель формата "K" представляет данные о часовом поясе значения даты и времени. При использовании этого описателя формата со значениями DateTime результирующая строка определяется значением свойства DateTime.Kind:

  • Для локального часового пояса ( DateTime.Kind значение DateTimeKind.Localсвойства) этот описатель создает результирующая строка, содержащая локальное смещение от времени в формате UTC, например "-07:00".

  • Для времени UTC (свойства DateTime.Kind со значением DateTimeKind.Utc) результирующая строка содержит знак "Z", указывающий дату в формате UTC.

  • Для времени в неопределенном часовом поясе (времени, свойство DateTime.Kind которого имеет значение DateTimeKind.Unspecified) результат равен String.Empty.

Для значений DateTimeOffset описатель формата K равнозначен описателю формата zz, который формирует результирующую строку, содержащую смещение значения от времени UTC в виде DateTimeOffset.

Если описатель формата "K" используется без других настраиваемых описателей формата, то он интерпретируется как описатель стандартного формата даты и времени и возникает исключение FormatException. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

В следующем примере показаны строки, полученные с использованием спецификатора настраиваемого формата "K" с различными значениями DateTime и DateTimeOffset в США. тихоокеанском стандартном часовом поясе США.

Console.WriteLine(DateTime.Now.ToString("%K"));
// Displays -07:00
Console.WriteLine(DateTime.UtcNow.ToString("%K"));
// Displays Z
Console.WriteLine("'{0}'",
                  DateTime.SpecifyKind(DateTime.Now,
                       DateTimeKind.Unspecified).ToString("%K"));
// Displays ''
Console.WriteLine(DateTimeOffset.Now.ToString("%K"));
// Displays -07:00
Console.WriteLine(DateTimeOffset.UtcNow.ToString("%K"));
// Displays +00:00
Console.WriteLine(new DateTimeOffset(2008, 5, 1, 6, 30, 0,
                      new TimeSpan(5, 0, 0)).ToString("%K"));
// Displays +05:00
Console.WriteLine(Date.Now.ToString("%K"))
' Displays -07:00
Console.WriteLine(Date.UtcNow.ToString("%K"))
' Displays Z      
Console.WriteLine("'{0}'", _
                  Date.SpecifyKind(Date.Now, _
                                   DateTimeKind.Unspecified). _
                  ToString("%K"))
' Displays ''      
Console.WriteLine(DateTimeOffset.Now.ToString("%K"))
' Displays -07:00
Console.WriteLine(DateTimeOffset.UtcNow.ToString("%K"))
' Displays +00:00
Console.WriteLine(New DateTimeOffset(2008, 5, 1, 6, 30, 0, _
                                     New TimeSpan(5, 0, 0)). _
                  ToString("%K"))
' Displays +05:00                        

К таблице

Описатель формата "m" для минут

Настраиваемый описатель формата "m"

Настраиваемый описатель формата "m" представляет минуты в виде числа в диапазоне от 0 до 59. Это число целых минут, прошедших с последнего часа. Минуты с одной цифрой форматируются без нуля в начале.

Если описатель формата "m" используется без других настраиваемых описателей формата, то он интерпретируется как описатель "m" стандартного формата даты и времени. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

В следующем примере настраиваемый описатель формата "m" используется в строке настраиваемого формата.

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1 µ
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5 µ
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1 µ                        
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1.5 µ

К таблице

Настраиваемый описатель формата "mm"

Настраиваемый описатель формата "mm" (плюс любое число дополнительных описателей "m") представляет минуты в виде числа в диапазоне от 00 до 59. Это число целых минут, прошедших с последнего часа. Минуты с одной цифрой форматируются с нулем в начале.

В следующем примере настраиваемый описатель формата "mm" используется в строке настраиваемого формата.

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01 PM
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01 du.
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01.50 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01.50 du.

К таблице

Описатель формата "M" для месяца

Настраиваемый описатель формата "M"

Описатель настраиваемого формата "М" представляет месяц как число от "1" до "12" (или от "1" до "13" для календарей, в которых 13 месяцев). Месяц, номер которого представляет одну цифру, форматируется без нуля в начале.

Если описатель формата "M" используется без других настраиваемых описателей формата, то он интерпретируется как описатель "M" стандартного формата даты и времени. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

В следующем примере настраиваемый описатель формата "M" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 8, 18);
Console.WriteLine(date1.ToString("(M) MMM, MMMM",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays (8) Aug, August
Console.WriteLine(date1.ToString("(M) MMM, MMMM",
                  CultureInfo.CreateSpecificCulture("nl-NL")));
// Displays (8) aug, augustus
Console.WriteLine(date1.ToString("(M) MMM, MMMM",
                  CultureInfo.CreateSpecificCulture("lv-LV")));
// Displays (8) Aug, augusts
Dim date1 As Date = #8/18/2008#
Console.WriteLine(date1.ToString("(M) MMM, MMMM", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays (8) Aug, August
Console.WriteLine(date1.ToString("(M) MMM, MMMM", _
                  CultureInfo.CreateSpecificCulture("nl-NL")))
' Displays (8) aug, augustus
Console.WriteLine(date1.ToString("(M) MMM, MMMM", _
                  CultureInfo.CreateSpecificCulture("lv-LV")))
' Displays (8) Aug, augusts                       

К таблице

Настраиваемый описатель формата "MM"

Описатель настраиваемого формата "ММ" представляет месяц как число от "01" до "12" (или от "1" до "13" для календарей, в которых 13 месяцев). Месяц, номер которого представляет одну цифру, форматируется с нулем в начале.

В следующем примере настраиваемый описатель формата "MM" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 1, 2, 6, 30, 15);

Console.WriteLine(date1.ToString("dd, MM",
                  CultureInfo.InvariantCulture));
// 02, 01
Dim date1 As Date = #1/2/2008 6:30:15AM#

Console.WriteLine(date1.ToString("dd, MM", _
                  CultureInfo.InvariantCulture))
' 02, 01

К таблице

Настраиваемый описатель формата "MMM"

Настраиваемый описатель формата "MMM" представляет сокращенное название месяца. Локализованное сокращенное название месяца извлекается из свойства DateTimeFormatInfo.AbbreviatedMonthNames текущей или заданной среды языка и региональных параметров.

В следующем примере настраиваемый описатель формата "MMM" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("ddd d MMM",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM",
                  CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays ven. 29 août
Dim date1 As Date = #08/29/2008 7:27:15PM#

Console.WriteLine(date1.ToString("ddd d MMM", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays Fri 29 Aug
Console.WriteLine(date1.ToString("ddd d MMM", _
                  CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays ven. 29 août                                                

К таблице

Настраиваемый описатель формата "MMMM"

Настраиваемый описатель формата "MMMM" представляет полное название месяца. Локализованное название месяца извлекается из свойства DateTimeFormatInfo.MonthNames текущей или заданной среды языка и региональных параметров.

В следующем примере настраиваемый описатель формата "MMMM" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15);

Console.WriteLine(date1.ToString("dddd dd MMMM",
                  CultureInfo.CreateSpecificCulture("en-US")));
// Displays Friday 29 August
Console.WriteLine(date1.ToString("dddd dd MMMM",
                  CultureInfo.CreateSpecificCulture("it-IT")));
// Displays venerdì 29 agosto
Dim date1 As Date = #08/29/2008 7:27:15PM#

Console.WriteLine(date1.ToString("dddd dd MMMM", _
                  CultureInfo.CreateSpecificCulture("en-US")))
' Displays Friday 29 August
Console.WriteLine(date1.ToString("dddd dd MMMM", _
                  CultureInfo.CreateSpecificCulture("it-IT")))
' Displays venerdì 29 agosto                                          

К таблице

Описатель формата "s" для секунд

Настраиваемый описатель формата "s"

Настраиваемый описатель формата "s" представляет секунды в виде числа в диапазоне от 0 до 59. Это число целых секунд, прошедших с последней полной минуты. Секунды с одной цифрой форматируются без нуля в начале.

Если описатель формата "s" используется без других настраиваемых описателей формата, то он интерпретируется как описатель "s" стандартного формата даты и времени. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

В следующем примере настраиваемый описатель формата "s" используется в строке настраиваемого формата.

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1 µ
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5 µ
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1 µ                        
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1.5 µ

К таблице

Настраиваемый описатель формата "ss"

Настраиваемый описатель формата "ss" (плюс любое число дополнительных описателей "s") представляет секунды в виде числа в диапазоне от 00 до 59. Это число целых секунд, прошедших с последней полной минуты. Секунды с одной цифрой форматируются с нулем в начале.

В следующем примере настраиваемый описатель формата "ss" используется в строке настраиваемого формата.

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01 PM
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01 du.
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01.50 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01.50 du.

К таблице

Описатель формата "t" для части суток (до или после полудня)

Настраиваемый описатель формата "t"

Настраиваемый описатель формата "t" представляет первый символ указателя AM/PM (до полудня/после полудня). Соответствующий локализованный указатель извлекается из свойства DateTimeFormatInfo.AMDesignator или DateTimeFormatInfo.PMDesignator текущей или заданной среды языка и региональных параметров. Указатель AM (до полудня) используется для всех значений времени от 0:00:00 (от полуночи) до 11:59:59.999. Указатель PM (после полудня) используется для всех значений времени от 12:00:00 (от полудня) до 23:59:59.999.

Если описатель формата "t" используется без других настраиваемых описателей формата, то он интерпретируется как описатель "t" стандартного формата даты и времени. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

В следующем примере настраиваемый описатель формата "t" используется в строке настраиваемого формата.

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1 µ
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.InvariantCulture));
// Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t",
                  CultureInfo.CreateSpecificCulture("el-GR")));
// Displays 6:9:1.5 µ
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1 µ                        
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.InvariantCulture))
' Displays 6:9:1.5 P
Console.WriteLine(date1.ToString("h:m:s.F t", _
                  CultureInfo.CreateSpecificCulture("el-GR")))
' Displays 6:9:1.5 µ

К таблице

Настраиваемый описатель формата "tt"

Настраиваемый описатель формата "tt" (плюс любое количество дополнительных описателей "t") представляет полный указатель AM/PM (до полудня/после полудня). Соответствующий локализованный указатель извлекается из свойства DateTimeFormatInfo.AMDesignator или DateTimeFormatInfo.PMDesignator текущей или заданной среды языка и региональных параметров. Указатель AM (до полудня) используется для всех значений времени от 0:00:00 (от полуночи) до 11:59:59.999. Указатель PM (после полудня) используется для всех значений времени от 12:00:00 (от полудня) до 23:59:59.999.

Следует проверить, используется ли описатель "tt" для тех языков, в которых необходимо поддерживать различие между временем до полудня и после полудня. Например, японский язык, для которого AM и PM указатели различаются во втором символе вместо первого.

В следующем примере настраиваемый описатель формата "tt" используется в строке настраиваемого формата.

DateTime date1;
date1 = new DateTime(2008, 1, 1, 18, 9, 1);
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01 PM
Console.WriteLine(date1.ToString("hh:mm:ss tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01 du.
date1 = new DateTime(2008, 1, 1, 18, 9, 1, 500);
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.InvariantCulture));
// Displays 06:09:01.50 PM
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt",
                  CultureInfo.CreateSpecificCulture("hu-HU")));
// Displays 06:09:01.50 du.
Dim date1 As Date
date1 = #6:09:01PM#
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01 du.
date1 = New Date(2008, 1, 1, 18, 9, 1, 500)
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.InvariantCulture))
' Displays 06:09:01.50 PM                        
Console.WriteLine(date1.ToString("hh:mm:ss.ff tt", _
                  CultureInfo.CreateSpecificCulture("hu-HU")))
' Displays 06:09:01.50 du.

К таблице

Описатель формата "y" для года

Настраиваемый описатель формата "y"

Настраиваемый описатель формата "y" представляет год в виде одно- или двузначного числа. Если год имеет более двух цифр, то в результате отображаются только две младшие цифры. Если первая цифра двузначного года начинается с нуля (например, 2008), то число форматируется без нуля в начале.

Если описатель формата "y" используется без других настраиваемых описателей формата, то он интерпретируется как описатель "y" стандартного формата даты и времени. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

В следующем примере настраиваемый описатель формата "y" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010
Dim date1 As Date = #12/1/0001#
Dim date2 As Date = #1/1/2010#
Console.WriteLine(date1.ToString("%y"))
' Displays 1
Console.WriteLine(date1.ToString("yy"))
' Displays 01
Console.WriteLine(date1.ToString("yyy"))
' Displays 001
Console.WriteLine(date1.ToString("yyyy"))
' Displays 0001
Console.WriteLine(date1.ToString("yyyyy"))
' Displays 00001
Console.WriteLine(date2.ToString("%y"))
' Displays 10
Console.WriteLine(date2.ToString("yy"))
' Displays 10
Console.WriteLine(date2.ToString("yyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"))
' Displays 02010      

К таблице

Настраиваемый описатель формата "yy"

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

В операции синтаксического анализа представленный в виде двузначного числа год, который анализируется с использованием описателя настраиваемого формата "yy", обрабатывается на основе свойства Calendar.TwoDigitYearMax текущего календаря поставщика формата. В следующем примере анализируется строковое представление даты, год в которой представлен в виде двузначного числа, с использованием григорианского календаря языка и региональных параметров en-US, которые в данном случае являются текущими языком и региональными параметрами. Затем объект CultureInfo текущих языка и региональных параметров изменяется так, чтобы использовался объект GregorianCalendar, свойство TwoDigitYearMax было изменено.

using System;
using System.Globalization;
using System.Threading;

public class Example7
{
    public static void Main()
    {
        string fmt = "dd-MMM-yy";
        string value = "24-Jan-49";

        Calendar cal = (Calendar)CultureInfo.CurrentCulture.Calendar.Clone();
        Console.WriteLine("Two Digit Year Range: {0} - {1}",
                          cal.TwoDigitYearMax - 99, cal.TwoDigitYearMax);

        Console.WriteLine("{0:d}", DateTime.ParseExact(value, fmt, null));
        Console.WriteLine();

        cal.TwoDigitYearMax = 2099;
        CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
        culture.DateTimeFormat.Calendar = cal;
        Thread.CurrentThread.CurrentCulture = culture;

        Console.WriteLine("Two Digit Year Range: {0} - {1}",
                          cal.TwoDigitYearMax - 99, cal.TwoDigitYearMax);
        Console.WriteLine("{0:d}", DateTime.ParseExact(value, fmt, null));
    }
}
// The example displays the following output:
//       Two Digit Year Range: 1930 - 2029
//       1/24/1949
//
//       Two Digit Year Range: 2000 - 2099
//       1/24/2049
Imports System.Globalization
Imports System.Threading

Module Example
    Public Sub Main()
        Dim fmt As String = "dd-MMM-yy"
        Dim value As String = "24-Jan-49"

        Dim cal As Calendar = CType(CultureInfo.CurrentCulture.Calendar.Clone(), Calendar)
        Console.WriteLine("Two Digit Year Range: {0} - {1}",
                          cal.TwoDigitYearMax - 99, cal.TwoDigitYearMax)

        Console.WriteLine("{0:d}", DateTime.ParseExact(value, fmt, Nothing))
        Console.WriteLine()

        cal.TwoDigitYearMax = 2099
        Dim culture As CultureInfo = CType(CultureInfo.CurrentCulture.Clone(), CultureInfo)
        culture.DateTimeFormat.Calendar = cal
        Thread.CurrentThread.CurrentCulture = culture

        Console.WriteLine("Two Digit Year Range: {0} - {1}",
                          cal.TwoDigitYearMax - 99, cal.TwoDigitYearMax)
        Console.WriteLine("{0:d}", DateTime.ParseExact(value, fmt, Nothing))
    End Sub
End Module
' The example displays the following output:
'       Two Digit Year Range: 1930 - 2029
'       1/24/1949
'       
'       Two Digit Year Range: 2000 - 2099
'       1/24/2049

В следующем примере настраиваемый описатель формата "yy" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010
Dim date1 As Date = #12/1/0001#
Dim date2 As Date = #1/1/2010#
Console.WriteLine(date1.ToString("%y"))
' Displays 1
Console.WriteLine(date1.ToString("yy"))
' Displays 01
Console.WriteLine(date1.ToString("yyy"))
' Displays 001
Console.WriteLine(date1.ToString("yyyy"))
' Displays 0001
Console.WriteLine(date1.ToString("yyyyy"))
' Displays 00001
Console.WriteLine(date2.ToString("%y"))
' Displays 10
Console.WriteLine(date2.ToString("yy"))
' Displays 10
Console.WriteLine(date2.ToString("yyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"))
' Displays 02010      

К таблице

Настраиваемый описатель формата "yyy"

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

Примечание

Для Тайского (буддистского) календаря, в котором годы могут состоять из пяти цифр, этот описатель формата отображает все значимые цифры.

В следующем примере настраиваемый описатель формата "yyy" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010
Dim date1 As Date = #12/1/0001#
Dim date2 As Date = #1/1/2010#
Console.WriteLine(date1.ToString("%y"))
' Displays 1
Console.WriteLine(date1.ToString("yy"))
' Displays 01
Console.WriteLine(date1.ToString("yyy"))
' Displays 001
Console.WriteLine(date1.ToString("yyyy"))
' Displays 0001
Console.WriteLine(date1.ToString("yyyyy"))
' Displays 00001
Console.WriteLine(date2.ToString("%y"))
' Displays 10
Console.WriteLine(date2.ToString("yy"))
' Displays 10
Console.WriteLine(date2.ToString("yyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"))
' Displays 02010      

К таблице

Настраиваемый описатель формата "yyyy"

Описатель настраиваемого формата "yyyy" представляет год в виде как минимум четырех цифр. Если в году больше четырех значащих цифр, они включаются в результирующую строку. Если в году меньше четырех цифр, число дополняется предшествующими нулями до достижения четырех цифр.

Примечание

Для Тайского (буддистского) календаря, в котором годы могут состоять из пяти цифр, этот описатель формата отображает минимум четыре цифры.

В следующем примере настраиваемый описатель формата "yyyy" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010
Dim date1 As Date = #12/1/0001#
Dim date2 As Date = #1/1/2010#
Console.WriteLine(date1.ToString("%y"))
' Displays 1
Console.WriteLine(date1.ToString("yy"))
' Displays 01
Console.WriteLine(date1.ToString("yyy"))
' Displays 001
Console.WriteLine(date1.ToString("yyyy"))
' Displays 0001
Console.WriteLine(date1.ToString("yyyyy"))
' Displays 00001
Console.WriteLine(date2.ToString("%y"))
' Displays 10
Console.WriteLine(date2.ToString("yy"))
' Displays 10
Console.WriteLine(date2.ToString("yyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"))
' Displays 02010      

К таблице

Настраиваемый описатель формата "yyyyy"

Описатель настраиваемого формата "yyyyy" (плюс любое число дополнительных описателей "y") представляет год в виде минимум пяти цифр. Если в году больше пяти значащих цифр, они включаются в результирующую строку. Если в году меньше пяти цифр, то число дополняется стоящими в начале нулями до пяти цифр.

Если имеются дополнительные описатели "y", то число дополняется нулями в начале до достижения указанного количества описателей "у".

В следующем примере настраиваемый описатель формата "yyyyy" используется в строке настраиваемого формата.

DateTime date1 = new DateTime(1, 12, 1);
DateTime date2 = new DateTime(2010, 1, 1);
Console.WriteLine(date1.ToString("%y"));
// Displays 1
Console.WriteLine(date1.ToString("yy"));
// Displays 01
Console.WriteLine(date1.ToString("yyy"));
// Displays 001
Console.WriteLine(date1.ToString("yyyy"));
// Displays 0001
Console.WriteLine(date1.ToString("yyyyy"));
// Displays 00001
Console.WriteLine(date2.ToString("%y"));
// Displays 10
Console.WriteLine(date2.ToString("yy"));
// Displays 10
Console.WriteLine(date2.ToString("yyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyy"));
// Displays 2010
Console.WriteLine(date2.ToString("yyyyy"));
// Displays 02010
Dim date1 As Date = #12/1/0001#
Dim date2 As Date = #1/1/2010#
Console.WriteLine(date1.ToString("%y"))
' Displays 1
Console.WriteLine(date1.ToString("yy"))
' Displays 01
Console.WriteLine(date1.ToString("yyy"))
' Displays 001
Console.WriteLine(date1.ToString("yyyy"))
' Displays 0001
Console.WriteLine(date1.ToString("yyyyy"))
' Displays 00001
Console.WriteLine(date2.ToString("%y"))
' Displays 10
Console.WriteLine(date2.ToString("yy"))
' Displays 10
Console.WriteLine(date2.ToString("yyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyy"))
' Displays 2010      
Console.WriteLine(date2.ToString("yyyyy"))
' Displays 02010      

К таблице

Описатель формата "z" для смещения

Настраиваемый описатель формата "z"

При DateTime использовании значений описатель настраиваемого формата "z" представляет смещение со знаком указанного часового пояса из времени в формате UTC, измеряемое в часах. Смещение всегда отображается со знаком в начале. Плюс (+) указывает на то, что часы опережают время UTC, а минус (-) — на то, что они от него отстают. Однозначное смещение отформатировано без нуля в начале.

В следующей таблице показано, как изменяется значение смещения в зависимости от DateTimeKind.

Значение DateTimeKind Значение смещения
Local Смещение со знаком часового пояса локальной операционной системы от UTC.
Unspecified Смещение со знаком часового пояса локальной операционной системы от UTC.
Utc +0в .NET Core и .NET 5+.

На платформа .NET Framework смещение со знаком часового пояса локальной операционной системы от UTC.

Для значений DateTimeOffset этот описатель формата представляет смещение значения DateTimeOffset от времени UTC в часах.

Если описатель формата "z" используется без других настраиваемых описателей формата, то он интерпретируется как описатель стандартного формата даты и времени и возникает исключение FormatException. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

В следующем примере настраиваемый описатель формата "z" используется в строке настраиваемого формата.

DateTime date1 = DateTime.UtcNow;
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}",
                  date1));
// Displays -7, -07, -07:00 on .NET Framework
// Displays +0, +00, +00:00 on .NET Core and .NET 5+

DateTimeOffset date2 = new DateTimeOffset(2008, 8, 1, 0, 0, 0,
                                          new TimeSpan(6, 0, 0));
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}",
                  date2));
// Displays +6, +06, +06:00
Dim date1 As Date = Date.UtcNow
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", _
                  date1))
' Displays -7, -07, -07:00 on .NET Framework
' Displays +0, +00, +00:00 on .NET Core and .NET 5+

Dim date2 As New DateTimeOffset(2008, 8, 1, 0, 0, 0, _
                                New Timespan(6, 0, 0))
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", _
                  date2))
' Displays +6, +06, +06:00

К таблице

Настраиваемый описатель формата "zz"

С DateTime помощью значений описатель настраиваемого формата "zz" представляет смещение со знаком указанного часового пояса в формате UTC, измеряемое в часах. Смещение всегда отображается со знаком в начале. Плюс (+) указывает на то, что часы опережают время UTC, а минус (-) — на то, что они от него отстают. Однозначное смещение отформатировано с нулем в начале.

В следующей таблице показано, как изменяется значение смещения в зависимости от DateTimeKind.

Значение DateTimeKind Значение смещения
Local Смещение со знаком часового пояса локальной операционной системы от UTC.
Unspecified Смещение со знаком часового пояса локальной операционной системы от UTC.
Utc +00в .NET Core и .NET 5+.

На платформа .NET Framework смещение со знаком часового пояса локальной операционной системы от UTC.

Для значений DateTimeOffset этот описатель формата представляет смещение значения DateTimeOffset от времени UTC в часах.

В следующем примере настраиваемый описатель формата "zz" используется в строке настраиваемого формата.

DateTime date1 = DateTime.UtcNow;
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}",
                  date1));
// Displays -7, -07, -07:00 on .NET Framework
// Displays +0, +00, +00:00 on .NET Core and .NET 5+

DateTimeOffset date2 = new DateTimeOffset(2008, 8, 1, 0, 0, 0,
                                          new TimeSpan(6, 0, 0));
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}",
                  date2));
// Displays +6, +06, +06:00
Dim date1 As Date = Date.UtcNow
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", _
                  date1))
' Displays -7, -07, -07:00 on .NET Framework
' Displays +0, +00, +00:00 on .NET Core and .NET 5+

Dim date2 As New DateTimeOffset(2008, 8, 1, 0, 0, 0, _
                                New Timespan(6, 0, 0))
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", _
                  date2))
' Displays +6, +06, +06:00

К таблице

Настраиваемый описатель формата "zzz"

С DateTime помощью значений описатель настраиваемого формата zzz представляет смещение со знаком указанного часового пояса в формате UTC, измеряемое в часах и минутах. Смещение всегда отображается со знаком в начале. Плюс (+) указывает на то, что часы опережают время UTC, а минус (-) — на то, что они от него отстают. Смещение с одной цифрой форматируется c нулем в начале.

В следующей таблице показано, как изменяется значение смещения в зависимости от DateTimeKind.

Значение DateTimeKind Значение смещения
Local Смещение со знаком часового пояса локальной операционной системы от UTC.
Unspecified Смещение со знаком часового пояса локальной операционной системы от UTC.
Utc +00:00в .NET Core и .NET 5+.

В платформа .NET Framework смещение подписанного часового пояса локальной операционной системы от UTC.

Для значений DateTimeOffset этот описатель формата представляет смещение значения DateTimeOffset от времени UTC в часах и минутах.

В следующем примере настраиваемый описатель формата "zzz" используется в строке настраиваемого формата.

DateTime date1 = DateTime.UtcNow;
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}",
                  date1));
// Displays -7, -07, -07:00 on .NET Framework
// Displays +0, +00, +00:00 on .NET Core and .NET 5+

DateTimeOffset date2 = new DateTimeOffset(2008, 8, 1, 0, 0, 0,
                                          new TimeSpan(6, 0, 0));
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}",
                  date2));
// Displays +6, +06, +06:00
Dim date1 As Date = Date.UtcNow
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", _
                  date1))
' Displays -7, -07, -07:00 on .NET Framework
' Displays +0, +00, +00:00 on .NET Core and .NET 5+

Dim date2 As New DateTimeOffset(2008, 8, 1, 0, 0, 0, _
                                New Timespan(6, 0, 0))
Console.WriteLine(String.Format("{0:%z}, {0:zz}, {0:zzz}", _
                  date2))
' Displays +6, +06, +06:00

К таблице

Описатели разделителей даты и времени

Настраиваемый описатель формата ":"

Настраиваемый описатель формата ":" представляет разделитель компонентов времени, который используется для разделения часов, минут и секунд. Соответствующий локализованный разделитель компонентов времени извлекается из свойства DateTimeFormatInfo.TimeSeparator текущей или заданной среды языка и региональных параметров.

Примечание

Чтобы изменить разделитель времени для определенной строки даты и времени, укажите знак разделителя в разделителе строк-литералов. Например, строка настраиваемого формата hh'_'dd'_'ss выдает результирующую строку, в которой "_" (подчеркивание) всегда используется в качестве разделителя времени. Чтобы изменить разделитель времени для всех дат для языка и региональных параметров, нужно либо изменить значение свойства DateTimeFormatInfo.TimeSeparator текущего языка и региональных параметров, либо создать объект DateTimeFormatInfo, назначить его свойству TimeSeparator знак и вызвать перегрузку метода форматирования, в который входит параметр IFormatProvider.

Если описатель формата ":" используется без других настраиваемых описателей формата, то он интерпретируется как описатель стандартного формата даты и времени и возникает исключение FormatException. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

К таблице

Настраиваемый описатель формата "/"

Описатель настраиваемого формата "/" представляет разделитель компонентов даты, который используется для разделения года, месяца и дня. Соответствующий локализованный разделитель компонентов даты извлекается из свойства DateTimeFormatInfo.DateSeparator текущей или заданной среды языка и региональных параметров.

Примечание

Чтобы изменить разделитель даты для определенной строки даты и времени, укажите знак разделителя в разделителе строк-литералов. Например, строка настраиваемого формата mm'/'dd'/'yyyy выдает результирующую строку, в которой "/" всегда используется в качестве разделителя даты. Чтобы изменить разделитель даты для всех дат для языка и региональных параметров, нужно либо изменить значение свойства DateTimeFormatInfo.DateSeparator текущего языка и региональных параметров, либо создать объект DateTimeFormatInfo, назначить его свойству DateSeparator знак и вызвать перегрузку метода форматирования, в который входит параметр IFormatProvider.

Если описатель формата "/" используется без других настраиваемых описателей формата, то он интерпретируется как описатель стандартного формата даты и времени и возникает исключение FormatException. Дополнительные сведения об использовании единичных описателей форматов см. в подразделе Использование единичных настраиваемых описателей форматов ниже.

К таблице

Символьные литералы

Следующие символы в строке настраиваемого формата даты являются зарезервированными. Они всегда интерпретируются как символы форматирования, а символы ", ', / и \ интерпретируются как специальные символы.

  • F
  • H
  • K
  • M
  • d
  • f
  • g
  • h
  • m
  • s
  • t
  • y
  • z
  • %
  • :
  • /
  • "
  • '
  • \

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

В следующем примере литеральные символы "PST" (стандартное тихоокеанское время) и "PDT" (тихоокеанское летнее время) представляют в строке формата местный часовой пояс. Обратите внимание, что строка включена в результирующую строку и строка, которая включает строку местного часового пояса зоны местного времени, успешно проходит синтаксический анализ.

using System;
using System.Globalization;

public class Example5
{
    public static void Main()
    {
        String[] formats = { "dd MMM yyyy hh:mm tt PST",
                           "dd MMM yyyy hh:mm tt PDT" };
        var dat = new DateTime(2016, 8, 18, 16, 50, 0);
        // Display the result string.
        Console.WriteLine(dat.ToString(formats[1]));

        // Parse a string.
        String value = "25 Dec 2016 12:00 pm PST";
        DateTime newDate;
        if (DateTime.TryParseExact(value, formats, null,
                                   DateTimeStyles.None, out newDate))
            Console.WriteLine(newDate);
        else
            Console.WriteLine("Unable to parse '{0}'", value);
    }
}
// The example displays the following output:
//       18 Aug 2016 04:50 PM PDT
//       12/25/2016 12:00:00 PM
Imports System.Globalization

Module Example
    Public Sub Main()
        Dim formats() As String = {"dd MMM yyyy hh:mm tt PST",
                                    "dd MMM yyyy hh:mm tt PDT"}
        Dim dat As New Date(2016, 8, 18, 16, 50, 0)
        ' Display the result string. 
        Console.WriteLine(dat.ToString(formats(1)))

        ' Parse a string. 
        Dim value As String = "25 Dec 2016 12:00 pm PST"
        Dim newDate As Date
        If Date.TryParseExact(value, formats, Nothing,
                              DateTimeStyles.None, newDate) Then
            Console.WriteLine(newDate)
        Else
            Console.WriteLine("Unable to parse '{0}'", value)
        End If
    End Sub
End Module
' The example displays the following output:
'       18 Aug 2016 04:50 PM PDT
'       12/25/2016 12:00:00 PM

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

В следующем примере литеральные символы "pst" (стандартное тихоокеанское время) представляют в строке формата местный часовой пояс. Поскольку "s" и "t" представляют собой строки настраиваемых форматов даты и времени, перед ними необходимо поставить знак обратной косой черты, чтобы интерпретировать их как символьные литералы.

using System;
using System.Globalization;

public class Example3
{
    public static void Main()
    {
        String format = "dd MMM yyyy hh:mm tt p\\s\\t";
        var dat = new DateTime(2016, 8, 18, 16, 50, 0);
        // Display the result string.
        Console.WriteLine(dat.ToString(format));

        // Parse a string.
        String value = "25 Dec 2016 12:00 pm pst";
        DateTime newDate;
        if (DateTime.TryParseExact(value, format, null,
                                   DateTimeStyles.None, out newDate))
            Console.WriteLine(newDate);
        else
            Console.WriteLine("Unable to parse '{0}'", value);
    }
}
// The example displays the following output:
//       18 Aug 2016 04:50 PM pst
//       12/25/2016 12:00:00 PM
Imports System.Globalization

Module Example
    Public Sub Main()
        Dim fmt As String = "dd MMM yyyy hh:mm tt p\s\t"
        Dim dat As New Date(2016, 8, 18, 16, 50, 0)
        ' Display the result string. 
        Console.WriteLine(dat.ToString(fmt))

        ' Parse a string. 
        Dim value As String = "25 Dec 2016 12:00 pm pst"
        Dim newDate As Date
        If Date.TryParseExact(value, fmt, Nothing,
                              DateTimeStyles.None, newDate) Then
            Console.WriteLine(newDate)
        Else
            Console.WriteLine("Unable to parse '{0}'", value)
        End If
    End Sub
End Module
' The example displays the following output:
'       18 Aug 2016 04:50 PM pst
'       12/25/2016 12:00:00 PM
  • Путем заключения всей литеральной строки в двойные или одинарные кавычки. Следующий пример аналогичен предыдущему, за исключением того, что "pst" заключается в кавычки, чтобы указать, что вся строка с разделителями должна интерпретироваться как символьные литералы.
using System;
using System.Globalization;

public class Example6
{
    public static void Main()
    {
        String format = "dd MMM yyyy hh:mm tt \"pst\"";
        var dat = new DateTime(2016, 8, 18, 16, 50, 0);
        // Display the result string.
        Console.WriteLine(dat.ToString(format));

        // Parse a string.
        String value = "25 Dec 2016 12:00 pm pst";
        DateTime newDate;
        if (DateTime.TryParseExact(value, format, null,
                                   DateTimeStyles.None, out newDate))
            Console.WriteLine(newDate);
        else
            Console.WriteLine("Unable to parse '{0}'", value);
    }
}
// The example displays the following output:
//       18 Aug 2016 04:50 PM pst
//       12/25/2016 12:00:00 PM
Imports System.Globalization

Module Example
    Public Sub Main()
        Dim fmt As String = "dd MMM yyyy hh:mm tt ""pst"""
        Dim dat As New Date(2016, 8, 18, 16, 50, 0)
        ' Display the result string. 
        Console.WriteLine(dat.ToString(fmt))

        ' Parse a string. 
        Dim value As String = "25 Dec 2016 12:00 pm pst"
        Dim newDate As Date
        If Date.TryParseExact(value, fmt, Nothing,
                              DateTimeStyles.None, newDate) Then
            Console.WriteLine(newDate)
        Else
            Console.WriteLine("Unable to parse '{0}'", value)
        End If
    End Sub
End Module
' The example displays the following output:
'       18 Aug 2016 04:50 PM pst
'       12/25/2016 12:00:00 PM

Примечания

Использование единичных описателей настраиваемого формата

Строка настраиваемого формата даты и времени состоит из двух или более знаков. Методы форматирования даты и времени интерпретируют любую односимвольную строку как строку стандартного формата даты и времени. Если они не распознают этот символ как допустимый описатель формата, возникает исключение FormatException. Например, строка формата, состоящая только из описателя "h", интерпретируется как строка стандартного формата даты и времени. Однако в этом случае создается исключение, так как отсутствует описатель стандартного формата даты и времени "h".

Чтобы использовать какой-либо настраиваемый описатель формата даты и времени в качестве единственного описателя в строке формата (т. е. использовать единственный настраиваемый описатель формата "d", "f", "F", "g", "h", "H", "K", "m", "M", "s", "t", "y", "z", ":" или "/"), следует включить пробел до или после описателя или указать описатель формата "%" (процент) перед единственным настраиваемым описателем формата даты и времени.

Например, "%h" интерпретируется как строка настраиваемого формата даты и времени, которая отображает час, представленный текущим значением даты и времени. Можно также использовать строки формата " h" или "h ", хотя в этом случае в результирующей строке час будет указан с пробелом. В следующем примере демонстрируется использование этих трех строк формата.

DateTime dat1 = new DateTime(2009, 6, 15, 13, 45, 0);

Console.WriteLine("'{0:%h}'", dat1);
Console.WriteLine("'{0: h}'", dat1);
Console.WriteLine("'{0:h }'", dat1);
// The example displays the following output:
//       '1'
//       ' 1'
//       '1 '
Dim dat1 As Date = #6/15/2009 1:45PM#

Console.WriteLine("'{0:%h}'", dat1)
Console.WriteLine("'{0: h}'", dat1)
Console.WriteLine("'{0:h }'", dat1)
' The example displays the following output:
'       '1'
'       ' 1'
'       '1 '

Использование escape-символа

Символы "d", "f", "F", "g", "h", "H", "K", "m", "M", "s", "t", "y", "z", ":" и "/" в строке формата интерпретируются как настраиваемые описатели формата, а не как литералы. Чтобы такие символы не обрабатывались как описатели формата, можно указывать перед ними обратную косую черту (\), называемую также escape-символом. Наличие escape-символа означает, что следующий за ним символ является литералом, который следует перенести в результирующую строку без изменений.

Чтобы включить в результирующую строку обратную косую черту, перед ней нужно поставить дополнительную обратную косую черту (\\).

Примечание

Кроме того, в некоторых компиляторах, например компиляторах C++ и C#, одиночная обратная косая черта также может восприниматься как escape-символ. Чтобы гарантировать, что строка будет правильно воспринята при форматировании, можно поставить символ буквального строкового литерала (символ "\@") перед строкой в C# или добавить дополнительный символ обратной косой черты перед каждой обратной косой чертой в C# и C++. В следующем примере кода на языке C# демонстрируются оба подхода.

В следующем примере с помощью escape-символа предотвращается интерпретация операцией форматирования символов "h" и "m" в качестве описателей формата.

DateTime date = new DateTime(2009, 06, 15, 13, 45, 30, 90);
string fmt1 = "h \\h m \\m";
string fmt2 = @"h \h m \m";

Console.WriteLine("{0} ({1}) -> {2}", date, fmt1, date.ToString(fmt1));
Console.WriteLine("{0} ({1}) -> {2}", date, fmt2, date.ToString(fmt2));
// The example displays the following output:
//       6/15/2009 1:45:30 PM (h \h m \m) -> 1 h 45 m
//       6/15/2009 1:45:30 PM (h \h m \m) -> 1 h 45 m
Dim date1 As Date = #6/15/2009 13:45#
Dim fmt As String = "h \h m \m"

Console.WriteLine("{0} ({1}) -> {2}", date1, fmt, date1.ToString(fmt))
' The example displays the following output:
'       6/15/2009 1:45:00 PM (h \h m \m) -> 1 h 45 m      

Параметры панели управления

На результирующую строку, отформатированную с большим количеством описателей формата даты и времени, влияют параметры, задаваемые в разделе Язык и региональные стандарты панели управления. Эти параметры используются для инициализации объекта, связанного DateTimeFormatInfo с текущим языком и региональными параметрами, который предоставляет значения, используемые для управления форматированием. Результирующие строки будут различаться на компьютерах с разными параметрами.

Кроме того, если конструктор CultureInfo(String) используется для создания экземпляра объекта CultureInfo, который представляет язык и региональные параметры, аналогичные текущему языку и региональным параметрам системы, все настройки, заданные в разделе Язык и региональные стандарты панели управления, будут применяться к новому объекту CultureInfo. Можно воспользоваться конструктором CultureInfo(String, Boolean) для создания объекта CultureInfo, который не отражает настройки системы.

Свойства DateTimeFormatInfo

Форматирование зависит от свойств текущего DateTimeFormatInfo объекта, который предоставляется неявно текущим языком и региональными параметрами или явно параметром IFormatProvider метода, который вызывает форматирование. Для параметра IFormatProvider необходимо указать объект CultureInfo, представляющий язык и региональные параметры, или объект DateTimeFormatInfo.

Результирующая строка, формируемая многими настраиваемыми описателями формата даты и времени, также зависит от свойств текущего объекта DateTimeFormatInfo. Приложение может изменить результат использования некоторых описателей настраиваемых форматов даты и времени, изменив соответствующее свойство DateTimeFormatInfo. Например, описатель формата "ddd" добавляет в результирующую строку сокращенное название дня недели, найденное в массиве строк AbbreviatedDayNames. Аналогичным образом описатель формата "MMMM" добавляет в результирующую строку полное название месяца, найденное в массиве строк MonthNames.

См. также