Строка стандартного формата даты и времени использует один символ в качестве описателя формата для определения текстового представления DateTime или значения DateTimeOffset. Любая строка формата даты и времени, содержащая более одной буквы, включая пробелы, интерпретируется как строка пользовательского формата даты и времени. Строку стандартного или пользовательского формата можно использовать двумя способами:
Для определения строки, являющейся результатом операции форматирования.
Для определения текстового представления значения даты и времени, которое можно преобразовать в значение DateTime или DateTimeOffset с помощью операции синтаксического анализа.
Совет
Вы можете загрузить служебную программу форматирования — приложение Windows Forms для .NET, позволяющее применять строки формата к значениям даты и времени и числовым значениям и отображающее результирующую строку. Исходный код доступен для C# и Visual Basic.
Примечание
Некоторые примеры C# в этой статье выполняются во встроенном средстве выполнения кода и на тестовой площадке Try.NET. Нажмите на кнопку Выполнить, чтобы выполнить пример в интерактивном окне. После выполнения кода вы можете изменить его и выполнить измененный код, снова нажав на кнопку Выполнить. Либо в интерактивном окне выполняется измененный код, либо, если компиляция завершается с ошибкой, в интерактивном окне отображаются все сообщения об ошибках компилятора C#.
В следующей таблице описаны спецификаторы стандартных форматов даты и времени. Если не указано иное, то описатель стандартного формата даты и времени выдает одинаковое строковое представление независимо от того, используется ли он со значением DateTime или со значением DateTimeOffset. Дополнительные сведения об использовании стандартных строк формата даты и времени см. в разделе Параметры панели управления и Панель свойств DateTimeFormatInfo.
В операции форматирования строка стандартного формата — это всего лишь псевдоним для строки пользовательского формата. Преимуществом использования псевдонима для ссылки на строку пользовательского формата является то, что при изменении строки пользовательского формата псевдоним может оставаться неизменным. Это важно, поскольку строковые представления значений даты и времени обычно зависят от региональных параметров. Например, строка стандартного формата "d" указывает, что значение даты и времени будет отображаться с использованием шаблона короткого формата даты. Для инвариантных региональных параметров таким шаблоном является "мм/дд/гггг". Для региональных параметров fr-FR это "дд/мм/гггг". Для региональных параметров ja-JP это "гггг/мм/дд".
Если строка стандартного формата в операции форматирования сопоставлена со строкой пользовательского формата для определенных региональных параметров, то приложение может определить конкретные региональные параметры, для которых строки пользовательского формата используются одним из следующих способов:
Можно использовать региональные параметры по умолчанию (или текущие). Следующий пример отображает дату в формате короткой даты, соответствующем текущим региональным параметрам. В этом случае текущими региональными параметрами являются en-US.
C#
// Display using current (en-us) culture's short date format
DateTime thisDate = new DateTime(2008, 3, 15);
Console.WriteLine(thisDate.ToString("d")); // Displays 3/15/2008
' Display using current (en-us) culture's short date format
Dim thisDate As Date = #03/15/2008#
Console.WriteLine(thisDate.ToString("d")) ' Displays 3/15/2008
Можно передать объект CultureInfo, представляющий язык и региональные параметры, соответствующее которым форматирование будет использоваться методом с параметром IFormatProvider. Следующий пример отображает дату в формате короткой даты, соответствующем региональным параметрам pt-BR.
C#
// Display using pt-BR culture's short date format
DateTime thisDate = new DateTime(2008, 3, 15);
CultureInfo culture = new CultureInfo("pt-BR");
Console.WriteLine(thisDate.ToString("d", culture)); // Displays 15/3/2008
' Display using pt-BR culture's short date format
Dim thisDate As Date = #03/15/2008#
Dim culture As New CultureInfo("pt-BR")
Console.WriteLine(thisDate.ToString("d", culture)) ' Displays 15/3/2008
Можно передать объект DateTimeFormatInfo, предоставляющий данные форматирования методу с параметром IFormatProvider. В следующем примере дата отображается с помощью короткого формата даты из объекта DateTimeFormatInfo, соответствующего региональным параметрам hr-HR.
C#
// Display using date format information from hr-HR culture
DateTime thisDate = new DateTime(2008, 3, 15);
DateTimeFormatInfo fmt = (new CultureInfo("hr-HR")).DateTimeFormat;
Console.WriteLine(thisDate.ToString("d", fmt)); // Displays 15.3.2008
' Display using date format information from hr-HR culture
Dim thisDate As Date = #03/15/2008#
Dim fmt As DateTimeFormatInfo = (New CultureInfo("hr-HR")).DateTimeFormat
Console.WriteLine(thisDate.ToString("d", fmt)) ' Displays 15.3.2008
Примечание
Дополнительные сведения о настройке шаблонов или строк, используемых в форматировании значений даты и времени, см. в статье о классе NumberFormatInfo.
В некоторых случаях строка стандартного формата служит удобным сокращением длинной строки пользовательского формата, который является неизменяемым. В эту категорию попадают четыре строки стандартного формата: "O" (или "o"), "R" (или "r"), "s" и "u". Эти строки соответствуют строкам пользовательского формата, соответствующего инвариантным региональным параметрам. Они создают строковые представления значений даты и времени, которые, предположительно, совпадают для различных региональных параметров. В следующей таблице приведены сведения об этих четырех строках стандартных форматов даты и времени.
Строки стандартного формата также можно использовать в операциях синтаксического анализа с методами DateTime.ParseExact и DateTimeOffset.ParseExact, которые требуют для успешного выполнения операции синтаксического анализа, чтобы входная строка строго соответствовала определенному шаблону. Многие строки стандартного формата сопоставляются с несколькими строками пользовательского формата, поэтому значение даты и времени может быть представлено в разных форматах, при этом операция синтаксического анализа пройдет успешно. Определить одну или несколько строк пользовательского формата, соответствующих строке стандартного формата, можно, вызвав метод DateTimeFormatInfo.GetAllDateTimePatterns(Char). В следующем примере показаны строки пользовательского формата, сопоставленные со строкой стандартного формата "d" (шаблон короткого формата даты).
C#
using System;
using System.Globalization;
publicclassExample
{
publicstaticvoidMain()
{
Console.WriteLine("'d' standard format string:");
foreach (var customString in DateTimeFormatInfo.CurrentInfo.GetAllDateTimePatterns('d'))
Console.WriteLine(" {0}", customString);
}
}
// The example displays the following output:// 'd' standard format string:// M/d/yyyy// M/d/yy// MM/dd/yy// MM/dd/yyyy// yy/MM/dd// yyyy-MM-dd// dd-MMM-yy
Imports System.Globalization
Module Example
Public Sub Main()
Console.WriteLine("'d' standard format string:")
For Each customString In DateTimeFormatInfo.CurrentInfo.GetAllDateTimePatterns("d"c)
Console.WriteLine(" {0}", customString)
Next
End Sub
End Module
' The example displays the following output:
' 'd' standard format string:
' M/d/yyyy
' M/d/yy
' MM/dd/yy
' MM/dd/yyyy
' yy/MM/dd
' yyyy-MM-dd
' dd-MMM-yy
В следующих разделах представлены описатели стандартных форматов для значений DateTime и DateTimeOffset.
Описатель стандартного формата "d" представляет строку настраиваемого формата даты и времени, определяемую свойством DateTimeFormatInfo.ShortDatePattern для конкретного языка и региональных параметров. Например, строкой настраиваемого формата, возвращаемой свойством ShortDatePattern для инвариантного языка и региональных параметров, будет строка "ММ/дд/гггг".
В следующей таблице представлены свойства объекта DateTimeFormatInfo, обеспечивающие управление форматированием возвращаемой строки.
Описатель стандартного формата "D" представляет строку настраиваемого формата даты и времени, определяемую текущим свойством DateTimeFormatInfo.LongDatePattern. Например, строкой пользовательского формата для инвариантных региональных параметров является "дддд, дд мммм гггг".
В следующей таблице представлены свойства объекта DateTimeFormatInfo, обеспечивающие управление форматированием возвращаемой строки.
Определяет переведенные названия месяцев, которые могут входить в результирующую строку.
В следующем примере описатель формата "D" используется для отображения значения даты и времени.
C#
DateTime date1 = new DateTime(2008, 4, 10);
Console.WriteLine(date1.ToString("D",
CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008
Console.WriteLine(date1.ToString("D",
CultureInfo.CreateSpecificCulture("pt-BR")));
// Displays quinta-feira, 10 de abril de 2008
Console.WriteLine(date1.ToString("D",
CultureInfo.CreateSpecificCulture("es-MX")));
// Displays jueves, 10 de abril de 2008
Dim date1 As Date = #4/10/2008#
Console.WriteLine(date1.ToString("D", _
CultureInfo.CreateSpecificCulture("en-US")))
' Displays Thursday, April 10, 2008
Console.WriteLine(date1.ToString("D", _
CultureInfo.CreateSpecificCulture("pt-BR")))
' Displays quinta-feira, 10 de abril de 2008
Console.WriteLine(date1.ToString("D", _
CultureInfo.CreateSpecificCulture("es-MX")))
' Displays jueves, 10 de abril de 2008
Описатель полного формата даты и краткого формата времени ("f")
Описатель стандартного формата "f" представляет сочетание полного формата даты ("D") и короткого формата времени ("t"), разделенных пробелом.
Форматирование результирующей строки определяется сведениями о форматировании в указанном объекте DateTimeFormatInfo. В следующей таблице представлены свойства объекта DateTimeFormatInfo, обеспечивающие управление форматированием возвращаемой строки. Настраиваемый описатель формата, возвращаемый свойствами DateTimeFormatInfo.LongDatePattern и DateTimeFormatInfo.ShortTimePattern некоторых языков и региональных параметров, может использовать не все свойства.
Определяет строку, указывающую на время в интервале от полудня до полуночи в 12-часовом формате указания времени.
В следующем примере описатель формата "f" используется для отображения значения даты и времени.
C#
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("f",
CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008 6:30 AM
Console.WriteLine(date1.ToString("f",
CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays jeudi 10 avril 2008 06:30
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("f", _
CultureInfo.CreateSpecificCulture("en-US")))
' Displays Thursday, April 10, 2008 6:30 AM
Console.WriteLine(date1.ToString("f", _
CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays jeudi 10 avril 2008 06:30
Описатель полного формата даты и полного формата времени ("F")
Описатель стандартного формата "F" представляет строку настраиваемого формата даты и времени, определяемую текущим свойством DateTimeFormatInfo.FullDateTimePattern. Например, строкой пользовательского формата для инвариантных региональных параметров является "дддд, дд мммм гггг чч:мм:сс".
В следующей таблице представлены свойства объекта DateTimeFormatInfo, обеспечивающие управление форматированием возвращаемой строки. Описатель настраиваемого формата, возвращаемый свойством FullDateTimePattern некоторых языков и региональных параметров, может использовать не все свойства.
Определяет строку, указывающую на время в интервале от полудня до полуночи в 12-часовом формате указания времени.
В следующем примере описатель формата "F" используется для отображения значения даты и времени.
C#
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("F",
CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008 6:30:00 AM
Console.WriteLine(date1.ToString("F",
CultureInfo.CreateSpecificCulture("fr-FR")));
// Displays jeudi 10 avril 2008 06:30:00
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("F", _
CultureInfo.CreateSpecificCulture("en-US")))
' Displays Thursday, April 10, 2008 6:30:00 AM
Console.WriteLine(date1.ToString("F", _
CultureInfo.CreateSpecificCulture("fr-FR")))
' Displays jeudi 10 avril 2008 06:30:00
Описатель общего формата даты и краткого формата времени ("g")
Описатель стандартного формата "g" представляет сочетание краткого формата даты ("d") и краткого формата времени ("t"), разделенных пробелом.
Форматирование результирующей строки определяется сведениями о форматировании в указанном объекте DateTimeFormatInfo. В следующей таблице представлены свойства объекта DateTimeFormatInfo, обеспечивающие управление форматированием возвращаемой строки. Описатель настраиваемого формата, возвращаемый свойствами DateTimeFormatInfo.ShortDatePattern и DateTimeFormatInfo.ShortTimePattern некоторых языков и региональных параметров, может использовать не все свойства.
Описатель общего формата даты и полного формата времени ("G")
Описатель стандартного формата "G" представляет сочетание краткого формата даты ("d") и полного формата времени ("T"), разделенных пробелом.
Форматирование результирующей строки определяется сведениями о форматировании в указанном объекте DateTimeFormatInfo. В следующей таблице представлены свойства объекта DateTimeFormatInfo, обеспечивающие управление форматированием возвращаемой строки. Описатель настраиваемого формата, возвращаемый свойствами DateTimeFormatInfo.ShortDatePattern и DateTimeFormatInfo.LongTimePattern некоторых языков и региональных параметров, может использовать не все свойства.
Описатель формата обратного преобразования ("O", "o")
Описатель формата обратного преобразования ("O", "o") представляет строку настраиваемого формата даты и времени, используя шаблон, который сохраняет данные о часовом поясе и возвращает строковое значение, соответствующее стандарту ISO 8601. Для значений DateTime этот спецификатор формата предназначен для сохранения значений даты и времени вместе со свойством DateTime.Kind в тексте. Форматированная строка может быть преобразована обратно с помощью метода DateTime.Parse(String, IFormatProvider, DateTimeStyles) или DateTime.ParseExact, если параметр styles имеет значение DateTimeStyles.RoundtripKind.
Описатель формата обратного преобразования "O" или "o" соответствует строке настраиваемого формата "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK" для значений DateTime и "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz" — для значений DateTimeOffset. В данной строке пары апострофов, разделяющие отдельные символы, такие как дефисы, двоеточия и букву "T", указывают, что отдельный символ является литералом, который не может быть изменен. Сами апострофы не отображаются в выходной строке.
Описатель стандартного формата "O" или "o" (и "yyyy'-'MM'-'dd'T'HH':'mm':'ss'). Строка настраиваемого формата fffffffK) использует три способа, которыми ISO 8601 представляет сведения о часовом поясе для сохранения Kind свойства значений DateTime :
Компонент часового пояса значений даты и времени типа DateTimeKind.Local — это смещение от часового пояса от UTC (например, +01:00, -07:00). Все значения DateTimeOffset также представлены в этом формате.
Компонент часового пояса значений даты и времени типа DateTimeKind.Utc использует символ "Z" (т. е. нулевое смещение) для представления часового пояса UTC.
Так как стандартный описатель формата "O" и "o" соответствует международному стандарту, операция форматирования или синтаксического анализа, использующая описатель, всегда использует инвариантный региональный параметр и григорианский календарь.
Строки, передаваемые методам Parse, TryParse, ParseExact и TryParseExact классов DateTime и DateTimeOffset, можно анализировать с помощью описателя формата "O" или "o", если они не представлены в одном из этих форматов. Для объектов DateTime вызываемая перегрузка синтаксического анализа также должна содержать параметр styles со значением DateTimeStyles.RoundtripKind. Обратите внимание, что при вызове метода синтаксического анализа с настраиваемой строкой формата, которая соответствует описателю формата "O" или "o", вы не получите те же результаты, что при использовании описателя "O" и "o". Это вызвано тем, что методы синтаксического анализа, использующие настраиваемую строку формата, не могут обработать строковое представление значений даты и времени без компонента часового пояса и не могут использовать символ "Z" для указания часового пояса UTC.
В следующем примере используется описатель формата "o" для отображения ряда значений DateTime и DateTimeOffset на компьютере в тихоокеанском стандартном часовом поясе США.
C#
using System;
publicclassExample
{
publicstaticvoidMain()
{
DateTime dat = new DateTime(2009, 6, 15, 13, 45, 30,
DateTimeKind.Unspecified);
Console.WriteLine("{0} ({1}) --> {0:O}", dat, dat.Kind);
DateTime uDat = new DateTime(2009, 6, 15, 13, 45, 30,
DateTimeKind.Utc);
Console.WriteLine("{0} ({1}) --> {0:O}", uDat, uDat.Kind);
DateTime lDat = new DateTime(2009, 6, 15, 13, 45, 30,
DateTimeKind.Local);
Console.WriteLine("{0} ({1}) --> {0:O}\n", lDat, lDat.Kind);
DateTimeOffset dto = new DateTimeOffset(lDat);
Console.WriteLine("{0} --> {0:O}", dto);
}
}
// The example displays the following output:// 6/15/2009 1:45:30 PM (Unspecified) --> 2009-06-15T13:45:30.0000000// 6/15/2009 1:45:30 PM (Utc) --> 2009-06-15T13:45:30.0000000Z// 6/15/2009 1:45:30 PM (Local) --> 2009-06-15T13:45:30.0000000-07:00//// 6/15/2009 1:45:30 PM -07:00 --> 2009-06-15T13:45:30.0000000-07:00
Module Example
Public Sub Main()
Dim dat As New Date(2009, 6, 15, 13, 45, 30,
DateTimeKind.Unspecified)
Console.WriteLine("{0} ({1}) --> {0:O}", dat, dat.Kind)
Dim uDat As New Date(2009, 6, 15, 13, 45, 30, DateTimeKind.Utc)
Console.WriteLine("{0} ({1}) --> {0:O}", uDat, uDat.Kind)
Dim lDat As New Date(2009, 6, 15, 13, 45, 30, DateTimeKind.Local)
Console.WriteLine("{0} ({1}) --> {0:O}", lDat, lDat.Kind)
Console.WriteLine()
Dim dto As New DateTimeOffset(lDat)
Console.WriteLine("{0} --> {0:O}", dto)
End Sub
End Module
' The example displays the following output:
' 6/15/2009 1:45:30 PM (Unspecified) --> 2009-06-15T13:45:30.0000000
' 6/15/2009 1:45:30 PM (Utc) --> 2009-06-15T13:45:30.0000000Z
' 6/15/2009 1:45:30 PM (Local) --> 2009-06-15T13:45:30.0000000-07:00
'
' 6/15/2009 1:45:30 PM -07:00 --> 2009-06-15T13:45:30.0000000-07:00
В следующем примере описатель формата "o" используется для создания форматированной строки, а затем для восстановления первоначальных значений даты и времени путем вызова метода Parse.
C#
// Round-trip DateTime values.
DateTime originalDate, newDate;
string dateString;
// Round-trip a local time.
originalDate = DateTime.SpecifyKind(new DateTime(2008, 4, 10, 6, 30, 0), DateTimeKind.Local);
dateString = originalDate.ToString("o");
newDate = DateTime.Parse(dateString, null, DateTimeStyles.RoundtripKind);
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind,
newDate, newDate.Kind);
// Round-trip a UTC time.
originalDate = DateTime.SpecifyKind(new DateTime(2008, 4, 12, 9, 30, 0), DateTimeKind.Utc);
dateString = originalDate.ToString("o");
newDate = DateTime.Parse(dateString, null, DateTimeStyles.RoundtripKind);
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind,
newDate, newDate.Kind);
// Round-trip time in an unspecified time zone.
originalDate = DateTime.SpecifyKind(new DateTime(2008, 4, 13, 12, 30, 0), DateTimeKind.Unspecified);
dateString = originalDate.ToString("o");
newDate = DateTime.Parse(dateString, null, DateTimeStyles.RoundtripKind);
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind,
newDate, newDate.Kind);
// Round-trip a DateTimeOffset value.
DateTimeOffset originalDTO = new DateTimeOffset(2008, 4, 12, 9, 30, 0, new TimeSpan(-8, 0, 0));
dateString = originalDTO.ToString("o");
DateTimeOffset newDTO = DateTimeOffset.Parse(dateString, null, DateTimeStyles.RoundtripKind);
Console.WriteLine("Round-tripped {0} to {1}.", originalDTO, newDTO);
// The example displays the following output:// Round-tripped 4/10/2008 6:30:00 AM Local to 4/10/2008 6:30:00 AM Local.// Round-tripped 4/12/2008 9:30:00 AM Utc to 4/12/2008 9:30:00 AM Utc.// Round-tripped 4/13/2008 12:30:00 PM Unspecified to 4/13/2008 12:30:00 PM Unspecified.// Round-tripped 4/12/2008 9:30:00 AM -08:00 to 4/12/2008 9:30:00 AM -08:00.
' Round-trip DateTime values.
Dim originalDate, newDate As Date
Dim dateString As String
' Round-trip a local time.
originalDate = Date.SpecifyKind(#4/10/2008 6:30AM#, DateTimeKind.Local)
dateString = originalDate.ToString("o")
newDate = Date.Parse(dateString, Nothing, DateTimeStyles.RoundtripKind)
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind, _
newDate, newDate.Kind)
' Round-trip a UTC time.
originalDate = Date.SpecifyKind(#4/12/2008 9:30AM#, DateTimeKind.Utc)
dateString = originalDate.ToString("o")
newDate = Date.Parse(dateString, Nothing, DateTimeStyles.RoundtripKind)
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind, _
newDate, newDate.Kind)
' Round-trip time in an unspecified time zone.
originalDate = Date.SpecifyKind(#4/13/2008 12:30PM#, DateTimeKind.Unspecified)
dateString = originalDate.ToString("o")
newDate = Date.Parse(dateString, Nothing, DateTimeStyles.RoundtripKind)
Console.WriteLine("Round-tripped {0} {1} to {2} {3}.", originalDate, originalDate.Kind, _
newDate, newDate.Kind)
' Round-trip a DateTimeOffset value.
Dim originalDTO As New DateTimeOffset(#4/12/2008 9:30AM#, New TimeSpan(-8, 0, 0))
dateString = originalDTO.ToString("o")
Dim newDTO As DateTimeOffset = DateTimeOffset.Parse(dateString, Nothing, DateTimeStyles.RoundtripKind)
Console.WriteLine("Round-tripped {0} to {1}.", originalDTO, newDTO)
' The example displays the following output:
' Round-tripped 4/10/2008 6:30:00 AM Local to 4/10/2008 6:30:00 AM Local.
' Round-tripped 4/12/2008 9:30:00 AM Utc to 4/12/2008 9:30:00 AM Utc.
' Round-tripped 4/13/2008 12:30:00 PM Unspecified to 4/13/2008 12:30:00 PM Unspecified.
' Round-tripped 4/12/2008 9:30:00 AM -08:00 to 4/12/2008 9:30:00 AM -08:00.
Описатель стандартного формата "R" или "r" представляет настраиваемую строку формата даты и времени, определяемую свойством DateTimeFormatInfo.RFC1123Pattern . Шаблон отражает определенный стандарт. Свойство предназначено только для чтения. Таким образом, оно не изменяется в зависимости от используемых региональных параметров или предоставленного поставщика формата. Строкой пользовательского формата является "ддд, дд ммм гггг чч':'мм':'сс 'GMT'". Когда используется этот спецификатор стандартного формата, операция форматирования или разбора всегда использует инвариантные региональные параметры.
Определяет сокращенные названия месяцев, которые могут входить в результирующую строку.
Хотя стандарт RFC 1123 выражает время как время в формате UTC, операция форматирования не изменяет значение DateTime отформатируемого объекта. Таким образом, необходимо преобразовать значение DateTime в UTC, вызвав метод DateTime.ToUniversalTime до выполнения операции форматирования. В отличие от этого значения DateTimeOffset выполняют это преобразование автоматически; нет необходимости вызывать DateTimeOffset.ToUniversalTime метод перед операцией форматирования.
В следующем примере используется описатель формата "r" для отображения значений DateTime и DateTimeOffset на компьютере в тихоокеанском стандартном часовом поясе США.
Описатель стандартного формата "s" представляет строку настраиваемого формата даты и времени, определяемую свойством DateTimeFormatInfo.SortableDateTimePattern. Шаблон отражает определенный стандарт (ISO 8601). Свойство предназначено только для чтения. Таким образом, оно не изменяется в зависимости от используемых региональных параметров или предоставленного поставщика формата. Строкой пользовательского формата является "гггг'-'мм'-'дд'T'чч':'мм':'сс".
Описатель формата "s" предназначен для создания строк результатов, согласованно отсортированных по возрастанию или убыванию на основе значений даты и времени. Соответственно, хотя описатель стандартного формата "s" представляет значение даты и времени в согласованном формате, операция форматирования не изменяет значение объекта даты и времени, которое форматируется в соответствии с его свойством DateTime.Kind или значением DateTimeOffset.Offset. Например, строки результатов, полученные при форматировании значений даты и времени 2014-11-15T18:32:17+00:00 и 2014-11-15T18:32:17+08:00, идентичны.
Когда используется этот спецификатор стандартного формата, операция форматирования или разбора всегда использует инвариантные региональные параметры.
В следующем примере используется описатель формата "s" для отображения значений DateTime и DateTimeOffset на компьютере в тихоокеанском стандартном часовом поясе США.
Описатель универсального сортируемого формата ("u")
Описатель стандартного формата "u" представляет строку настраиваемого формата даты и времени, определяемую свойством DateTimeFormatInfo.UniversalSortableDateTimePattern. Шаблон отражает определенный стандарт. Свойство предназначено только для чтения. Таким образом, оно не изменяется в зависимости от используемых региональных параметров или предоставленного поставщика формата. Строкой пользовательского формата является "гггг'-'мм'-'дд чч':'мм':'сс'Z'". Когда используется этот спецификатор стандартного формата, операция форматирования или разбора всегда использует инвариантные региональные параметры.
Хотя результирующая строка должна отображать время в формате UTC, преобразование первоначального значения DateTime в процессе форматирования не выполняется. Таким образом, необходимо преобразовать значение DateTime в UTC, вызвав метод DateTime.ToUniversalTime до выполнения операции форматирования. В то же время для значений DateTimeOffset преобразование выполняется автоматически; нет необходимости вызывать метод DateTimeOffset.ToUniversalTime перед операцией форматирования.
В следующем примере описатель формата "u" используется для отображения значения даты и времени.
Описатель стандартного формата "U" представляет строку настраиваемого формата даты и времени, определяемую свойством DateTimeFormatInfo.FullDateTimePattern для конкретного языка и региональных параметров. Этот шаблон совпадает с шаблоном "F". Тем не менее, значение DateTime автоматически преобразуется в формат UTC до форматирования.
В следующей таблице представлены свойства объекта DateTimeFormatInfo, обеспечивающие управление форматированием возвращаемой строки. Описатель настраиваемого формата, возвращаемый свойством FullDateTimePattern некоторых языков и региональных параметров, может использовать не все свойства.
В следующем примере описатель формата "U" используется для отображения значения даты и времени.
C#
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("U",
CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008 1:30:00 PM
Console.WriteLine(date1.ToString("U",
CultureInfo.CreateSpecificCulture("sv-FI")));
// Displays den 10 april 2008 13:30:00
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("U", CultureInfo.CreateSpecificCulture("en-US")))
' Displays Thursday, April 10, 2008 1:30:00 PM
Console.WriteLine(date1.ToString("U", CultureInfo.CreateSpecificCulture("sv-FI")))
' Displays den 10 april 2008 13:30:00
Описатель стандартного формата "t" представляет строку настраиваемого формата даты и времени, определяемую текущим свойством DateTimeFormatInfo.ShortTimePattern. Например, строкой пользовательского формата для инвариантных региональных параметров является "чч:мм".
Форматирование результирующей строки определяется сведениями о форматировании в указанном объекте DateTimeFormatInfo. В следующей таблице представлены свойства объекта DateTimeFormatInfo, обеспечивающие управление форматированием возвращаемой строки. Описатель настраиваемого формата, возвращаемый свойством DateTimeFormatInfo.ShortTimePattern некоторых языков и региональных параметров, может использовать не все свойства.
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("t", _
CultureInfo.CreateSpecificCulture("en-us")))
' Displays 6:30 AM
Console.WriteLine(date1.ToString("t", _
CultureInfo.CreateSpecificCulture("es-ES")))
' Displays 6:30
Описатель стандартного формата "T" представляет строку настраиваемого формата даты и времени, определяемую свойством DateTimeFormatInfo.LongTimePattern для конкретного языка и региональных параметров. Например, строкой пользовательского формата для инвариантных региональных параметров является "чч:мм:сс".
В следующей таблице представлены свойства объекта DateTimeFormatInfo, обеспечивающие управление форматированием возвращаемой строки. Описатель настраиваемого формата, возвращаемый свойством DateTimeFormatInfo.LongTimePattern некоторых языков и региональных параметров, может использовать не все свойства.
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("T", _
CultureInfo.CreateSpecificCulture("en-us")))
' Displays 6:30:00 AM
Console.WriteLine(date1.ToString("T", _
CultureInfo.CreateSpecificCulture("es-ES")))
' Displays 6:30:00
Описатель стандартного формата "M" или "m" представляет строку настраиваемого формата даты и времени, определяемую текущим свойством DateTimeFormatInfo.MonthDayPattern. Например, строкой пользовательского формата для инвариантных региональных параметров является "мммм дд".
В следующей таблице представлены свойства объекта DateTimeFormatInfo, обеспечивающие управление форматированием возвращаемой строки.
Определяет переведенные названия месяцев, которые могут входить в результирующую строку.
В следующем примере описатель формата "m" используется для отображения значения даты и времени.
C#
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("m",
CultureInfo.CreateSpecificCulture("en-us")));
// Displays April 10
Console.WriteLine(date1.ToString("m",
CultureInfo.CreateSpecificCulture("ms-MY")));
// Displays 10 April
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("m", _
CultureInfo.CreateSpecificCulture("en-us")))
' Displays April 10
Console.WriteLine(date1.ToString("m", _
CultureInfo.CreateSpecificCulture("ms-MY")))
' Displays 10 April
Описатель стандартного формата "Y", "y" представляет строку настраиваемого формата даты и времени, определяемую свойством DateTimeFormatInfo.YearMonthPattern для конкретного языка и региональных параметров. Например, строкой пользовательского формата для инвариантных региональных параметров является "гггг мммм".
В следующей таблице представлены свойства объекта DateTimeFormatInfo, обеспечивающие управление форматированием возвращаемой строки.
Определяет переведенные названия месяцев, которые могут входить в результирующую строку.
В следующем примере описатель формата "y" используется для отображения значения даты и времени.
C#
DateTime date1 = new DateTime(2008, 4, 10, 6, 30, 0);
Console.WriteLine(date1.ToString("Y",
CultureInfo.CreateSpecificCulture("en-US")));
// Displays April, 2008
Console.WriteLine(date1.ToString("y",
CultureInfo.CreateSpecificCulture("af-ZA")));
// Displays April 2008
Dim date1 As Date = #4/10/2008 6:30AM#
Console.WriteLine(date1.ToString("Y", CultureInfo.CreateSpecificCulture("en-US")))
' Displays April, 2008
Console.WriteLine(date1.ToString("y", CultureInfo.CreateSpecificCulture("af-ZA")))
' Displays April 2008
Параметры элемента панели управления Язык и региональные стандарты в Windows влияют на выходную строку, что получается в результате операции форматирования. Эти параметры используются для инициализации объекта, связанного DateTimeFormatInfo с текущим языком и региональными параметрами, который предоставляет значения, используемые для управления форматированием. Результирующие строки будут различаться на компьютерах с разными параметрами.
Кроме того, если конструктор CultureInfo(String) используется для создания нового экземпляра объекта CultureInfo , представляющего язык и региональные параметры, аналогичные текущему языку и региональным параметрам системы, то все настройки, заданные в разделе Язык и региональные стандарты панели управления, будут применяться к новому объекту CultureInfo . Можно воспользоваться конструктором CultureInfo(String, Boolean) для создания объекта CultureInfo , который не отражает настройки системы.
Свойства DateTimeFormatInfo
Форматирование зависит от свойств текущего DateTimeFormatInfo объекта, который неявно предоставляется текущим языком и региональными параметрами или явно IFormatProvider параметром метода, который вызывает форматирование. Для параметра IFormatProvider приложение должно указать объект CultureInfo, представляющий региональные параметры, или объект DateTimeFormatInfo, представляющий соглашения о форматировании даты и времени для конкретных региональных параметров. Многие спецификаторы стандартных форматов даты и времени являются псевдонимами для шаблонов форматирования, которые определены свойствами текущего объекта DateTimeFormatInfo. Приложение может изменить результат, полученный некоторыми спецификаторами стандартных форматов даты и времени, изменив соответствующие шаблоны форматирования соответствующего свойства DateTimeFormatInfo.
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.