DateTimeFormatInfo.GetAllDateTimePatterns Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает стандартные шаблоны, в которых можно форматировать значения даты и времени.
Перегрузки
GetAllDateTimePatterns() |
Возвращает все стандартные шаблоны, в которых можно форматировать значения даты и времени. |
GetAllDateTimePatterns(Char) |
Возвращает все шаблоны, в которых значения даты и времени можно форматировать с использованием заданной стандартной строки формата. |
GetAllDateTimePatterns()
- Исходный код:
- DateTimeFormatInfo.cs
- Исходный код:
- DateTimeFormatInfo.cs
- Исходный код:
- DateTimeFormatInfo.cs
Возвращает все стандартные шаблоны, в которых можно форматировать значения даты и времени.
public:
cli::array <System::String ^> ^ GetAllDateTimePatterns();
public string[] GetAllDateTimePatterns ();
member this.GetAllDateTimePatterns : unit -> string[]
Public Function GetAllDateTimePatterns () As String()
Возвращаемое значение
Массив, содержащий стандартные шаблоны, в которых можно форматировать значения даты и времени.
Примеры
В следующем примере отображаются строки формата даты и времени для инвариантного языка и региональных параметров, а также результирующий текст, который создается при использовании этой строки формата для форматирования определенной даты.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
DateTime date = new DateTime(2014, 8, 28, 12, 28, 30);
DateTimeFormatInfo invDTF = new DateTimeFormatInfo();
String[] formats = invDTF.GetAllDateTimePatterns();
Console.WriteLine("{0,-40} {1}\n", "Pattern", "Result String");
foreach (var fmt in formats)
Console.WriteLine("{0,-40} {1}", fmt, date.ToString(fmt));
}
}
// The example displays the following output:
// Pattern Result String
//
// MM/dd/yyyy 08/28/2014
// yyyy-MM-dd 2014-08-28
// dddd, dd MMMM yyyy Thursday, 28 August 2014
// dddd, dd MMMM yyyy HH:mm Thursday, 28 August 2014 12:28
// dddd, dd MMMM yyyy hh:mm tt Thursday, 28 August 2014 12:28 PM
// dddd, dd MMMM yyyy H:mm Thursday, 28 August 2014 12:28
// dddd, dd MMMM yyyy h:mm tt Thursday, 28 August 2014 12:28 PM
// dddd, dd MMMM yyyy HH:mm:ss Thursday, 28 August 2014 12:28:30
// MM/dd/yyyy HH:mm 08/28/2014 12:28
// MM/dd/yyyy hh:mm tt 08/28/2014 12:28 PM
// MM/dd/yyyy H:mm 08/28/2014 12:28
// MM/dd/yyyy h:mm tt 08/28/2014 12:28 PM
// yyyy-MM-dd HH:mm 2014-08-28 12:28
// yyyy-MM-dd hh:mm tt 2014-08-28 12:28 PM
// yyyy-MM-dd H:mm 2014-08-28 12:28
// yyyy-MM-dd h:mm tt 2014-08-28 12:28 PM
// MM/dd/yyyy HH:mm:ss 08/28/2014 12:28:30
// yyyy-MM-dd HH:mm:ss 2014-08-28 12:28:30
// MMMM dd August 28
// MMMM dd August 28
// yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK 2014-08-28T12:28:30.0000000
// yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK 2014-08-28T12:28:30.0000000
// ddd, dd MMM yyyy HH':'mm':'ss 'GMT' Thu, 28 Aug 2014 12:28:30 GMT
// ddd, dd MMM yyyy HH':'mm':'ss 'GMT' Thu, 28 Aug 2014 12:28:30 GMT
// yyyy'-'MM'-'dd'T'HH':'mm':'ss 2014-08-28T12:28:30
// HH:mm 12:28
// hh:mm tt 12:28 PM
// H:mm 12:28
// h:mm tt 12:28 PM
// HH:mm:ss 12:28:30
// yyyy'-'MM'-'dd HH':'mm':'ss'Z' 2014-08-28 12:28:30Z
// dddd, dd MMMM yyyy HH:mm:ss Thursday, 28 August 2014 12:28:30
// yyyy MMMM 2014 August
// yyyy MMMM 2014 August
Imports System.Globalization
Module Example
Public Sub Main()
Dim date1 As Date = #08/28/2014 12:28:30PM#
Dim invDTF As New DateTimeFormatInfo()
Dim formats() As String = invDTF.GetAllDateTimePatterns()
Console.WriteLine("{0,-40} {1}", "Pattern", "Result String")
Console.WriteLine()
For Each fmt In formats
Console.WriteLine("{0,-40} {1}", fmt, date1.ToString(fmt))
Next
End Sub
End Module
' The example displays the following output:
' Pattern Result String
'
' MM/dd/yyyy 08/28/2014
' yyyy-MM-dd 2014-08-28
' dddd, dd MMMM yyyy Thursday, 28 August 2014
' dddd, dd MMMM yyyy HH:mm Thursday, 28 August 2014 12:28
' dddd, dd MMMM yyyy hh:mm tt Thursday, 28 August 2014 12:28 PM
' dddd, dd MMMM yyyy H:mm Thursday, 28 August 2014 12:28
' dddd, dd MMMM yyyy h:mm tt Thursday, 28 August 2014 12:28 PM
' dddd, dd MMMM yyyy HH:mm:ss Thursday, 28 August 2014 12:28:30
' MM/dd/yyyy HH:mm 08/28/2014 12:28
' MM/dd/yyyy hh:mm tt 08/28/2014 12:28 PM
' MM/dd/yyyy H:mm 08/28/2014 12:28
' MM/dd/yyyy h:mm tt 08/28/2014 12:28 PM
' yyyy-MM-dd HH:mm 2014-08-28 12:28
' yyyy-MM-dd hh:mm tt 2014-08-28 12:28 PM
' yyyy-MM-dd H:mm 2014-08-28 12:28
' yyyy-MM-dd h:mm tt 2014-08-28 12:28 PM
' MM/dd/yyyy HH:mm:ss 08/28/2014 12:28:30
' yyyy-MM-dd HH:mm:ss 2014-08-28 12:28:30
' MMMM dd August 28
' MMMM dd August 28
' yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK 2014-08-28T12:28:30.0000000
' yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK 2014-08-28T12:28:30.0000000
' ddd, dd MMM yyyy HH':'mm':'ss 'GMT' Thu, 28 Aug 2014 12:28:30 GMT
' ddd, dd MMM yyyy HH':'mm':'ss 'GMT' Thu, 28 Aug 2014 12:28:30 GMT
' yyyy'-'MM'-'dd'T'HH':'mm':'ss 2014-08-28T12:28:30
' HH:mm 12:28
' hh:mm tt 12:28 PM
' H:mm 12:28
' h:mm tt 12:28 PM
' HH:mm:ss 12:28:30
' yyyy'-'MM'-'dd HH':'mm':'ss'Z' 2014-08-28 12:28:30Z
' dddd, dd MMMM yyyy HH:mm:ss Thursday, 28 August 2014 12:28:30
' yyyy MMMM 2014 August
' yyyy MMMM 2014 August
В примере создается DateTimeFormatInfo экземпляр объекта , представляющего инвариантный язык и региональные параметры, путем вызова конструктора DateTimeFormatInfo . Он также может получить объект DateTimeFormatInfo , представляющий инвариантный язык и региональные InvariantInfo параметры из свойства .
Комментарии
Этот метод возвращает массив, содержащий все строки настраиваемого формата, соответствующие строкам стандартного формата. Список строк стандартного формата см. в статье Стандартные строки формата даты и времени .
В операциях форматирования можно использовать строки настраиваемого формата в массиве, возвращаемом методом GetAllDateTimePatterns . Однако в этом случае строковое представление значения даты и времени, возвращаемого в этой операции форматирования, не всегда может быть успешно проанализировано методами Parse
и TryParse
. Поэтому нельзя предположить, что строки пользовательского формата, возвращаемые методом GetAllDateTimePatterns , могут использоваться для значений даты и времени кругового пути. Приведенный ниже пример иллюстрирует данную проблему. Он извлекает DateTimeFormatInfo объект, содержащий сведения о форматировании для итальянского языка и региональных параметров. Каждая строка настраиваемого формата в массиве, возвращаемом методом GetAllDateTimePatterns() , передается методу DateTime.ToString(String) для создания строкового представления даты и времени. Затем в этом примере выполняется попытка проанализировать это значение путем DateTime.TryParse(String, DateTime) вызова метода . Как показано в выходных данных примера, некоторые строки настраиваемого формата не создают значения даты и времени, которые успешно выполняют круговые пути.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
CultureInfo culture = CultureInfo.CreateSpecificCulture("it-IT");
DateTime date1 = new DateTime(2011, 02, 01, 7, 30, 45, 0);
DateTime date2;
int total = 0;
int noRoundTrip = 0;
foreach (var fmt in culture.DateTimeFormat.GetAllDateTimePatterns()) {
total += 1;
if (! DateTime.TryParse(date1.ToString(fmt), out date2)) {
noRoundTrip++;
Console.WriteLine("Unable to parse {0:" + fmt + "} (format '{1}')",
date1, fmt);
}
}
Console.WriteLine("\nUnable to round-trip {0} of {1} format strings.",
noRoundTrip, total);
}
}
// The example displays the following output:
// Unable to parse Tuesday 1 February 2011 7.30 (format 'dddd d MMMM yyyy H.mm')
// Unable to parse Tuesday 1 February 2011 07.30 (format 'dddd d MMMM yyyy HH.mm')
// Unable to parse 1-Feb-11 7.30 (format 'd-MMM-yy H.mm')
// Unable to parse 1-Feb-11 07.30 (format 'd-MMM-yy HH.mm')
// Unable to parse 1 February 2011 7.30 (format 'd MMMM yyyy H.mm')
// Unable to parse 1 February 2011 07.30 (format 'd MMMM yyyy HH.mm')
// Unable to parse Tuesday 1 February 2011 7.30.45 (format 'dddd d MMMM yyyy H.mm.ss')
// Unable to parse Tuesday 1 February 2011 07.30.45 (format 'dddd d MMMM yyyy HH.mm.ss')
// Unable to parse 1-Feb-11 7.30.45 (format 'd-MMM-yy H.mm.ss')
// Unable to parse 1-Feb-11 07.30.45 (format 'd-MMM-yy HH.mm.ss')
// Unable to parse 1 February 2011 7.30.45 (format 'd MMMM yyyy H.mm.ss')
// Unable to parse 1 February 2011 07.30.45 (format 'd MMMM yyyy HH.mm.ss')
// Unable to parse 01/02/2011 7.30 (format 'dd/MM/yyyy H.mm')
// Unable to parse 01/02/2011 07.30 (format 'dd/MM/yyyy HH.mm')
// Unable to parse 01/Feb/2011 7.30 (format 'dd/MMM/yyyy H.mm')
// Unable to parse 01/Feb/2011 07.30 (format 'dd/MMM/yyyy HH.mm')
// Unable to parse 01/02/11 7.30 (format 'dd/MM/yy H.mm')
// Unable to parse 01/02/11 07.30 (format 'dd/MM/yy HH.mm')
// Unable to parse 01.2.11 7.30 (format 'dd.M.yy H.mm')
// Unable to parse 01.2.11 07.30 (format 'dd.M.yy HH.mm')
// Unable to parse 1/2/11 7.30 (format 'd/M/yy H.mm')
// Unable to parse 1/2/11 07.30 (format 'd/M/yy HH.mm')
// Unable to parse 2011-02-01 7.30 (format 'yyyy-MM-dd H.mm')
// Unable to parse 2011-02-01 07.30 (format 'yyyy-MM-dd HH.mm')
// Unable to parse 01/02/2011 7.30.45 (format 'dd/MM/yyyy H.mm.ss')
// Unable to parse 01/02/2011 07.30.45 (format 'dd/MM/yyyy HH.mm.ss')
// Unable to parse 01/Feb/2011 7.30.45 (format 'dd/MMM/yyyy H.mm.ss')
// Unable to parse 01/Feb/2011 07.30.45 (format 'dd/MMM/yyyy HH.mm.ss')
// Unable to parse 01/02/11 7.30.45 (format 'dd/MM/yy H.mm.ss')
// Unable to parse 01/02/11 07.30.45 (format 'dd/MM/yy HH.mm.ss')
// Unable to parse 01.2.11 7.30.45 (format 'dd.M.yy H.mm.ss')
// Unable to parse 01.2.11 07.30.45 (format 'dd.M.yy HH.mm.ss')
// Unable to parse 1/2/11 7.30.45 (format 'd/M/yy H.mm.ss')
// Unable to parse 1/2/11 07.30.45 (format 'd/M/yy HH.mm.ss')
// Unable to parse 2011-02-01 7.30.45 (format 'yyyy-MM-dd H.mm.ss')
// Unable to parse 2011-02-01 07.30.45 (format 'yyyy-MM-dd HH.mm.ss')
// Unable to parse Tuesday 1 February 2011 7.30.45 (format 'dddd d MMMM yyyy H.mm.ss')
// Unable to parse Tuesday 1 February 2011 07.30.45 (format 'dddd d MMMM yyyy HH.mm.ss')
// Unable to parse 1-Feb-11 7.30.45 (format 'd-MMM-yy H.mm.ss')
// Unable to parse 1-Feb-11 07.30.45 (format 'd-MMM-yy HH.mm.ss')
// Unable to parse 1 February 2011 7.30.45 (format 'd MMMM yyyy H.mm.ss')
// Unable to parse 1 February 2011 07.30.45 (format 'd MMMM yyyy HH.mm.ss')
//
// Unable to round-trip 42 of 98 format strings.
Imports System.Globalization
Module Example
Public Sub Main()
Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture("it-IT")
Dim date1 = New DateTime(2011, 02, 01, 7, 30, 45, 0)
Dim date2 As DateTime
Dim total, noRoundTrip As Integer
For Each fmt In culture.DateTimeFormat.GetAllDateTimePatterns()
total += 1
If Not DateTime.TryParse(date1.ToString(fmt), date2)
noRoundTrip += 1
Console.WriteLine("Unable to parse {0:" + fmt + "} (format '{1}')",
date1, fmt)
End If
Next
Console.WriteLine()
Console.WriteLine("Unable to round-trip {0} of {1} format strings.",
noRoundTrip, total)
End Sub
End Module
' The example displays the following output:
' Unable to parse Tuesday 1 February 2011 7.30 (format 'dddd d MMMM yyyy H.mm')
' Unable to parse Tuesday 1 February 2011 07.30 (format 'dddd d MMMM yyyy HH.mm')
' Unable to parse 1-Feb-11 7.30 (format 'd-MMM-yy H.mm')
' Unable to parse 1-Feb-11 07.30 (format 'd-MMM-yy HH.mm')
' Unable to parse 1 February 2011 7.30 (format 'd MMMM yyyy H.mm')
' Unable to parse 1 February 2011 07.30 (format 'd MMMM yyyy HH.mm')
' Unable to parse Tuesday 1 February 2011 7.30.45 (format 'dddd d MMMM yyyy H.mm.ss')
' Unable to parse Tuesday 1 February 2011 07.30.45 (format 'dddd d MMMM yyyy HH.mm.ss')
' Unable to parse 1-Feb-11 7.30.45 (format 'd-MMM-yy H.mm.ss')
' Unable to parse 1-Feb-11 07.30.45 (format 'd-MMM-yy HH.mm.ss')
' Unable to parse 1 February 2011 7.30.45 (format 'd MMMM yyyy H.mm.ss')
' Unable to parse 1 February 2011 07.30.45 (format 'd MMMM yyyy HH.mm.ss')
' Unable to parse 01/02/2011 7.30 (format 'dd/MM/yyyy H.mm')
' Unable to parse 01/02/2011 07.30 (format 'dd/MM/yyyy HH.mm')
' Unable to parse 01/Feb/2011 7.30 (format 'dd/MMM/yyyy H.mm')
' Unable to parse 01/Feb/2011 07.30 (format 'dd/MMM/yyyy HH.mm')
' Unable to parse 01/02/11 7.30 (format 'dd/MM/yy H.mm')
' Unable to parse 01/02/11 07.30 (format 'dd/MM/yy HH.mm')
' Unable to parse 01.2.11 7.30 (format 'dd.M.yy H.mm')
' Unable to parse 01.2.11 07.30 (format 'dd.M.yy HH.mm')
' Unable to parse 1/2/11 7.30 (format 'd/M/yy H.mm')
' Unable to parse 1/2/11 07.30 (format 'd/M/yy HH.mm')
' Unable to parse 2011-02-01 7.30 (format 'yyyy-MM-dd H.mm')
' Unable to parse 2011-02-01 07.30 (format 'yyyy-MM-dd HH.mm')
' Unable to parse 01/02/2011 7.30.45 (format 'dd/MM/yyyy H.mm.ss')
' Unable to parse 01/02/2011 07.30.45 (format 'dd/MM/yyyy HH.mm.ss')
' Unable to parse 01/Feb/2011 7.30.45 (format 'dd/MMM/yyyy H.mm.ss')
' Unable to parse 01/Feb/2011 07.30.45 (format 'dd/MMM/yyyy HH.mm.ss')
' Unable to parse 01/02/11 7.30.45 (format 'dd/MM/yy H.mm.ss')
' Unable to parse 01/02/11 07.30.45 (format 'dd/MM/yy HH.mm.ss')
' Unable to parse 01.2.11 7.30.45 (format 'dd.M.yy H.mm.ss')
' Unable to parse 01.2.11 07.30.45 (format 'dd.M.yy HH.mm.ss')
' Unable to parse 1/2/11 7.30.45 (format 'd/M/yy H.mm.ss')
' Unable to parse 1/2/11 07.30.45 (format 'd/M/yy HH.mm.ss')
' Unable to parse 2011-02-01 7.30.45 (format 'yyyy-MM-dd H.mm.ss')
' Unable to parse 2011-02-01 07.30.45 (format 'yyyy-MM-dd HH.mm.ss')
' Unable to parse Tuesday 1 February 2011 7.30.45 (format 'dddd d MMMM yyyy H.mm.ss')
' Unable to parse Tuesday 1 February 2011 07.30.45 (format 'dddd d MMMM yyyy HH.mm.ss')
' Unable to parse 1-Feb-11 7.30.45 (format 'd-MMM-yy H.mm.ss')
' Unable to parse 1-Feb-11 07.30.45 (format 'd-MMM-yy HH.mm.ss')
' Unable to parse 1 February 2011 7.30.45 (format 'd MMMM yyyy H.mm.ss')
' Unable to parse 1 February 2011 07.30.45 (format 'd MMMM yyyy HH.mm.ss')
'
' Unable to round-trip 42 of 98 format strings.
Чтобы проанализировать строковое представление даты и времени, которые могут быть выражены в нескольких предопределенных пользовательских форматах, вызовите один из следующих методов:
DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)
DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles)
DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)
DateTimeOffset.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)
Строки настраиваемого формата в массиве, возвращаемом методом GetAllDateTimePatterns , зависят от текущего календаря языка и региональных параметров, для которых DateTimeFormatInfo объект предоставляет сведения о форматировании. При изменении календаря изменяется и массив, возвращаемый этим методом.
См. также раздел
Применяется к
GetAllDateTimePatterns(Char)
- Исходный код:
- DateTimeFormatInfo.cs
- Исходный код:
- DateTimeFormatInfo.cs
- Исходный код:
- DateTimeFormatInfo.cs
Возвращает все шаблоны, в которых значения даты и времени можно форматировать с использованием заданной стандартной строки формата.
public:
cli::array <System::String ^> ^ GetAllDateTimePatterns(char format);
public string[] GetAllDateTimePatterns (char format);
member this.GetAllDateTimePatterns : char -> string[]
Public Function GetAllDateTimePatterns (format As Char) As String()
Параметры
- format
- Char
Строка стандартного формата.
Возвращаемое значение
Массив, содержащий стандартные шаблоны, в которых значения даты и времени можно форматировать с помощью указанной строки формата.
Исключения
Параметр format
не является допустимой строкой стандартного формата.
Примеры
В следующем примере показаны шаблоны даты и времени для текущего календаря.
#using <System.dll>
using namespace System;
using namespace System::Globalization;
public ref class SamplesDateTimeFormatInfo
{
public:
static void Main()
{
// Creates a new DateTimeFormatinfo.
DateTimeFormatInfo^ myDtfi = gcnew DateTimeFormatInfo;
// Gets and prints all the patterns
array<String^>^myPatternsArray = myDtfi->GetAllDateTimePatterns();
Console::WriteLine( "ALL the patterns:" );
PrintIndexAndValues( myPatternsArray );
// Gets and prints the pattern(s) associated with some of the format characters.
myPatternsArray = myDtfi->GetAllDateTimePatterns( 'd' );
Console::WriteLine( "The patterns for 'd':" );
PrintIndexAndValues( myPatternsArray );
myPatternsArray = myDtfi->GetAllDateTimePatterns( 'D' );
Console::WriteLine( "The patterns for 'D':" );
PrintIndexAndValues( myPatternsArray );
myPatternsArray = myDtfi->GetAllDateTimePatterns( 'f' );
Console::WriteLine( "The patterns for 'f':" );
PrintIndexAndValues( myPatternsArray );
myPatternsArray = myDtfi->GetAllDateTimePatterns( 'F' );
Console::WriteLine( "The patterns for 'F':" );
PrintIndexAndValues( myPatternsArray );
myPatternsArray = myDtfi->GetAllDateTimePatterns( 'r' );
Console::WriteLine( "The patterns for 'r':" );
PrintIndexAndValues( myPatternsArray );
myPatternsArray = myDtfi->GetAllDateTimePatterns( 'R' );
Console::WriteLine( "The patterns for 'R':" );
PrintIndexAndValues( myPatternsArray );
}
public:
static void PrintIndexAndValues( array<String^>^myArray ) {
int i = 0;
for each ( String^ s in myArray )
Console::WriteLine( "\t[{0}]:\t{1}", i++, s );
Console::WriteLine();
}
};
int main()
{
SamplesDateTimeFormatInfo::Main();
}
/*
This code produces the following output.
ALL the patterns:
[0]: MM/dd/yyyy
[1]: dddd, dd MMMM yyyy
[2]: dddd, dd MMMM yyyy HH:mm
[3]: dddd, dd MMMM yyyy hh:mm tt
[4]: dddd, dd MMMM yyyy H:mm
[5]: dddd, dd MMMM yyyy h:mm tt
[6]: dddd, dd MMMM yyyy HH:mm:ss
[7]: MM/dd/yyyy HH:mm
[8]: MM/dd/yyyy hh:mm tt
[9]: MM/dd/yyyy H:mm
[10]: MM/dd/yyyy h:mm tt
[11]: MM/dd/yyyy HH:mm:ss
[12]: MMMM dd
[13]: MMMM dd
[14]: ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
[15]: ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
[16]: yyyy'-'MM'-'dd'T'HH':'mm':'ss
[17]: HH:mm
[18]: hh:mm tt
[19]: H:mm
[20]: h:mm tt
[21]: HH:mm:ss
[22]: yyyy'-'MM'-'dd HH':'mm':'ss'Z'
[23]: dddd, dd MMMM yyyy HH:mm:ss
[24]: yyyy MMMM
[25]: yyyy MMMM
The patterns for 'd':
[0]: MM/dd/yyyy
The patterns for 'D':
[0]: dddd, dd MMMM yyyy
The patterns for 'f':
[0]: dddd, dd MMMM yyyy HH:mm
[1]: dddd, dd MMMM yyyy hh:mm tt
[2]: dddd, dd MMMM yyyy H:mm
[3]: dddd, dd MMMM yyyy h:mm tt
The patterns for 'F':
[0]: dddd, dd MMMM yyyy HH:mm:ss
The patterns for 'r':
[0]: ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
The patterns for 'R':
[0]: ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
*/
using System;
using System.Globalization;
public class SamplesDateTimeFormatInfo {
public static void Main() {
// Creates a new DateTimeFormatinfo.
DateTimeFormatInfo myDtfi = new DateTimeFormatInfo();
// Gets and prints all the patterns.
String[] myPatternsArray = myDtfi.GetAllDateTimePatterns();
Console.WriteLine( "ALL the patterns:" );
PrintIndexAndValues( myPatternsArray );
// Gets and prints the pattern(s) associated with some of the format characters.
myPatternsArray = myDtfi.GetAllDateTimePatterns('d');
Console.WriteLine( "The patterns for 'd':" );
PrintIndexAndValues( myPatternsArray );
myPatternsArray = myDtfi.GetAllDateTimePatterns('D');
Console.WriteLine( "The patterns for 'D':" );
PrintIndexAndValues( myPatternsArray );
myPatternsArray = myDtfi.GetAllDateTimePatterns('f');
Console.WriteLine( "The patterns for 'f':" );
PrintIndexAndValues( myPatternsArray );
myPatternsArray = myDtfi.GetAllDateTimePatterns('F');
Console.WriteLine( "The patterns for 'F':" );
PrintIndexAndValues( myPatternsArray );
myPatternsArray = myDtfi.GetAllDateTimePatterns('r');
Console.WriteLine( "The patterns for 'r':" );
PrintIndexAndValues( myPatternsArray );
myPatternsArray = myDtfi.GetAllDateTimePatterns('R');
Console.WriteLine( "The patterns for 'R':" );
PrintIndexAndValues( myPatternsArray );
}
public static void PrintIndexAndValues( String[] myArray ) {
int i = 0;
foreach ( string s in myArray )
Console.WriteLine( "\t[{0}]:\t{1}", i++, s );
Console.WriteLine();
}
}
/*
This code produces the following output.
ALL the patterns:
[0]: MM/dd/yyyy
[1]: dddd, dd MMMM yyyy
[2]: dddd, dd MMMM yyyy HH:mm
[3]: dddd, dd MMMM yyyy hh:mm tt
[4]: dddd, dd MMMM yyyy H:mm
[5]: dddd, dd MMMM yyyy h:mm tt
[6]: dddd, dd MMMM yyyy HH:mm:ss
[7]: MM/dd/yyyy HH:mm
[8]: MM/dd/yyyy hh:mm tt
[9]: MM/dd/yyyy H:mm
[10]: MM/dd/yyyy h:mm tt
[11]: MM/dd/yyyy HH:mm:ss
[12]: MMMM dd
[13]: MMMM dd
[14]: ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
[15]: ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
[16]: yyyy'-'MM'-'dd'T'HH':'mm':'ss
[17]: HH:mm
[18]: hh:mm tt
[19]: H:mm
[20]: h:mm tt
[21]: HH:mm:ss
[22]: yyyy'-'MM'-'dd HH':'mm':'ss'Z'
[23]: dddd, dd MMMM yyyy HH:mm:ss
[24]: yyyy MMMM
[25]: yyyy MMMM
The patterns for 'd':
[0]: MM/dd/yyyy
The patterns for 'D':
[0]: dddd, dd MMMM yyyy
The patterns for 'f':
[0]: dddd, dd MMMM yyyy HH:mm
[1]: dddd, dd MMMM yyyy hh:mm tt
[2]: dddd, dd MMMM yyyy H:mm
[3]: dddd, dd MMMM yyyy h:mm tt
The patterns for 'F':
[0]: dddd, dd MMMM yyyy HH:mm:ss
The patterns for 'r':
[0]: ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
The patterns for 'R':
[0]: ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
*/
Imports System.Globalization
Public Class SamplesDateTimeFormatInfo
Public Shared Sub Main()
' Creates a new DateTimeFormatinfo.
Dim myDtfi As New DateTimeFormatInfo()
' Gets and prints all the patterns.
Dim myPatternsArray As String() = myDtfi.GetAllDateTimePatterns()
Console.WriteLine("ALL the patterns:")
PrintIndexAndValues(myPatternsArray)
' Gets and prints the pattern(s) associated with some of the format characters.
myPatternsArray = myDtfi.GetAllDateTimePatterns("d"c)
Console.WriteLine("The patterns for 'd':")
PrintIndexAndValues(myPatternsArray)
myPatternsArray = myDtfi.GetAllDateTimePatterns("D"c)
Console.WriteLine("The patterns for 'D':")
PrintIndexAndValues(myPatternsArray)
myPatternsArray = myDtfi.GetAllDateTimePatterns("f"c)
Console.WriteLine("The patterns for 'f':")
PrintIndexAndValues(myPatternsArray)
myPatternsArray = myDtfi.GetAllDateTimePatterns("F"c)
Console.WriteLine("The patterns for 'F':")
PrintIndexAndValues(myPatternsArray)
myPatternsArray = myDtfi.GetAllDateTimePatterns("r"c)
Console.WriteLine("The patterns for 'r':")
PrintIndexAndValues(myPatternsArray)
myPatternsArray = myDtfi.GetAllDateTimePatterns("R"c)
Console.WriteLine("The patterns for 'R':")
PrintIndexAndValues(myPatternsArray)
End Sub
Public Shared Sub PrintIndexAndValues(myArray() As String)
Dim i As Integer = 0
Dim s As String
For Each s In myArray
Console.WriteLine(ControlChars.Tab + "[{0}]:" + ControlChars.Tab _
+ "{1}", i, s)
i += 1
Next s
Console.WriteLine()
End Sub
End Class
' This code produces the following output.
'
' ALL the patterns:
' [0]: MM/dd/yyyy
' [1]: dddd, dd MMMM yyyy
' [2]: dddd, dd MMMM yyyy HH:mm
' [3]: dddd, dd MMMM yyyy hh:mm tt
' [4]: dddd, dd MMMM yyyy H:mm
' [5]: dddd, dd MMMM yyyy h:mm tt
' [6]: dddd, dd MMMM yyyy HH:mm:ss
' [7]: MM/dd/yyyy HH:mm
' [8]: MM/dd/yyyy hh:mm tt
' [9]: MM/dd/yyyy H:mm
' [10]: MM/dd/yyyy h:mm tt
' [11]: MM/dd/yyyy HH:mm:ss
' [12]: MMMM dd
' [13]: MMMM dd
' [14]: ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
' [15]: ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
' [16]: yyyy'-'MM'-'dd'T'HH':'mm':'ss
' [17]: HH:mm
' [18]: hh:mm tt
' [19]: H:mm
' [20]: h:mm tt
' [21]: HH:mm:ss
' [22]: yyyy'-'MM'-'dd HH':'mm':'ss'Z'
' [23]: dddd, dd MMMM yyyy HH:mm:ss
' [24]: yyyy MMMM
' [25]: yyyy MMMM
'
' The patterns for 'd':
' [0]: MM/dd/yyyy
'
' The patterns for 'D':
' [0]: dddd, dd MMMM yyyy
'
' The patterns for 'f':
' [0]: dddd, dd MMMM yyyy HH:mm
' [1]: dddd, dd MMMM yyyy hh:mm tt
' [2]: dddd, dd MMMM yyyy H:mm
' [3]: dddd, dd MMMM yyyy h:mm tt
'
' The patterns for 'F':
' [0]: dddd, dd MMMM yyyy HH:mm:ss
'
' The patterns for 'r':
' [0]: ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
'
' The patterns for 'R':
' [0]: ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
'
Комментарии
Этот метод возвращает массив, содержащий строки настраиваемого формата, соответствующие определенной строке стандартного формата. Список строк стандартного формата см. в статье Стандартные строки формата даты и времени .
В операциях форматирования можно использовать строки настраиваемого формата в массиве, возвращаемом методом GetAllDateTimePatterns . Однако в этом случае строковое представление значения даты и времени, возвращаемого в этой операции форматирования, не всегда может быть успешно проанализировано методами Parse
и TryParse
. Поэтому нельзя предположить, что строки пользовательского формата, возвращаемые методом GetAllDateTimePatterns , могут использоваться для значений даты и времени кругового пути. Приведенный ниже пример иллюстрирует данную проблему. Он извлекает DateTimeFormatInfo объект , содержащий сведения о форматировании для языка и региональных параметров России (русский). Он вызывает GetAllDateTimePatterns(Char) метод для каждой строки стандартного формата, а затем передает каждую строку настраиваемого формата в возвращенном массиве DateTime.ToString(String) методу для создания строкового представления даты и времени. Затем в этом примере выполняется попытка проанализировать это значение путем DateTime.TryParse(String, DateTime) вызова метода . Как показано в выходных данных примера, некоторые строки настраиваемого формата не создают значения даты и времени, которые успешно выполняют круговые пути.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
CultureInfo culture = CultureInfo.CreateSpecificCulture("ru-RU");
char[] formats = { 'd', 'D', 'f', 'F', 'g', 'G', 'm', 'o',
'r', 's', 't', 'T', 'u', 'U', 'y' };
DateTime date1 = new DateTime(2011, 02, 01, 7, 30, 45, 0);
DateTime date2;
int total = 0;
int noRoundTrip = 0;
foreach (var fmt in formats) {
total = 0;
noRoundTrip = 0;
foreach (var pattern in culture.DateTimeFormat.GetAllDateTimePatterns(fmt)) {
total++;
if (! DateTime.TryParse(date1.ToString(pattern), out date2)) {
noRoundTrip++;
Console.WriteLine("Unable to parse {0:" + pattern + "} (format '{1}')",
date1, pattern);
}
}
if (noRoundTrip > 0)
Console.WriteLine("{0}: Unable to round-trip {1} of {2} format strings.\n",
fmt, noRoundTrip, total);
else
Console.WriteLine("{0}: All custom format strings round trip.\n", fmt);
}
}
}
// The example displays the following output:
// d: All custom format strings round trip.
//
// Unable to parse 1 February 2011 г. (format 'd MMMM yyyy 'г.'')
// Unable to parse 01 February 2011 г. (format 'dd MMMM yyyy 'г.'')
// D: Unable to round-trip 2 of 2 format strings.
//
// Unable to parse 1 February 2011 г. 7:30 (format 'd MMMM yyyy 'г.' H:mm')
// Unable to parse 1 February 2011 г. 07:30 (format 'd MMMM yyyy 'г.' HH:mm')
// Unable to parse 01 February 2011 г. 7:30 (format 'dd MMMM yyyy 'г.' H:mm')
// Unable to parse 01 February 2011 г. 07:30 (format 'dd MMMM yyyy 'г.' HH:mm')
// f: Unable to round-trip 4 of 4 format strings.
//
// Unable to parse 1 February 2011 г. 7:30:45 (format 'd MMMM yyyy 'г.' H:mm:ss')
// Unable to parse 1 February 2011 г. 07:30:45 (format 'd MMMM yyyy 'г.' HH:mm:ss')
// Unable to parse 01 February 2011 г. 7:30:45 (format 'dd MMMM yyyy 'г.' H:mm:ss')
// Unable to parse 01 February 2011 г. 07:30:45 (format 'dd MMMM yyyy 'г.' HH:mm:ss')
// F: Unable to round-trip 4 of 4 format strings.
//
// g: All custom format strings round trip.
//
// G: All custom format strings round trip.
//
// m: All custom format strings round trip.
//
// o: All custom format strings round trip.
//
// r: All custom format strings round trip.
//
// s: All custom format strings round trip.
//
// t: All custom format strings round trip.
//
// T: All custom format strings round trip.
//
// u: All custom format strings round trip.
//
// Unable to parse 1 February 2011 г. 7:30:45 (format 'd MMMM yyyy 'г.' H:mm:ss')
// Unable to parse 1 February 2011 г. 07:30:45 (format 'd MMMM yyyy 'г.' HH:mm:ss')
// Unable to parse 01 February 2011 г. 7:30:45 (format 'dd MMMM yyyy 'г.' H:mm:ss')
// Unable to parse 01 February 2011 г. 07:30:45 (format 'dd MMMM yyyy 'г.' HH:mm:ss')
// U: Unable to round-trip 4 of 4 format strings.
//
// y: All custom format strings round trip.
Imports System.Globalization
Module Example
Public Sub Main()
Dim culture As CultureInfo = CultureInfo.CreateSpecificCulture("ru-RU")
Dim formats() As String = { "d", "D", "f", "F", "g", "G", "m",
"o", "r", "s", "t", "T", "u", "U", "y" }
Dim date1 = New DateTime(2011, 02, 01, 7, 30, 45, 0)
Dim date2 As DateTime
Dim total, noRoundTrip As Integer
For Each fmt In formats
total = 0 : noRoundTrip = 0
For Each pattern In culture.DateTimeFormat.GetAllDateTimePatterns(CChar(fmt))
total += 1
If Not DateTime.TryParse(date1.ToString(pattern), date2)
noRoundTrip += 1
Console.WriteLine("Unable to parse {0:" + pattern + "} (format '{1}')",
date1, pattern)
End If
Next
If noRoundTrip > 0 Then
Console.WriteLine("{0}: Unable to round-trip {1} of {2} format strings.",
fmt, noRoundTrip, total)
Console.WriteLine()
Else
Console.WriteLine("{0}: All custom format strings round trip.", fmt)
Console.WriteLine()
End If
Next
End Sub
End Module
' The example displays the following output:
' d: All custom format strings round trip.
'
' Unable to parse 1 February 2011 г. (format 'd MMMM yyyy 'г.'')
' Unable to parse 01 February 2011 г. (format 'dd MMMM yyyy 'г.'')
' D: Unable to round-trip 2 of 2 format strings.
'
' Unable to parse 1 February 2011 г. 7:30 (format 'd MMMM yyyy 'г.' H:mm')
' Unable to parse 1 February 2011 г. 07:30 (format 'd MMMM yyyy 'г.' HH:mm')
' Unable to parse 01 February 2011 г. 7:30 (format 'dd MMMM yyyy 'г.' H:mm')
' Unable to parse 01 February 2011 г. 07:30 (format 'dd MMMM yyyy 'г.' HH:mm')
' f: Unable to round-trip 4 of 4 format strings.
'
' Unable to parse 1 February 2011 г. 7:30:45 (format 'd MMMM yyyy 'г.' H:mm:ss')
' Unable to parse 1 February 2011 г. 07:30:45 (format 'd MMMM yyyy 'г.' HH:mm:ss')
' Unable to parse 01 February 2011 г. 7:30:45 (format 'dd MMMM yyyy 'г.' H:mm:ss')
' Unable to parse 01 February 2011 г. 07:30:45 (format 'dd MMMM yyyy 'г.' HH:mm:ss')
' F: Unable to round-trip 4 of 4 format strings.
'
' g: All custom format strings round trip.
'
' G: All custom format strings round trip.
'
' m: All custom format strings round trip.
'
' o: All custom format strings round trip.
'
' r: All custom format strings round trip.
'
' s: All custom format strings round trip.
'
' t: All custom format strings round trip.
'
' T: All custom format strings round trip.
'
' u: All custom format strings round trip.
'
' Unable to parse 1 February 2011 г. 7:30:45 (format 'd MMMM yyyy 'г.' H:mm:ss')
' Unable to parse 1 February 2011 г. 07:30:45 (format 'd MMMM yyyy 'г.' HH:mm:ss')
' Unable to parse 01 February 2011 г. 7:30:45 (format 'dd MMMM yyyy 'г.' H:mm:ss')
' Unable to parse 01 February 2011 г. 07:30:45 (format 'dd MMMM yyyy 'г.' HH:mm:ss')
' U: Unable to round-trip 4 of 4 format strings.
'
' y: All custom format strings round trip.
Чтобы проанализировать строковое представление даты и времени, которые могут быть выражены в нескольких предопределенных пользовательских форматах, вызовите один из следующих методов:
DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)
DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles)
DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)
DateTimeOffset.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTimeOffset)
Строки настраиваемого формата в массиве, возвращаемом методом GetAllDateTimePatterns , зависят от текущего календаря языка и региональных параметров, для которых DateTimeFormatInfo объект предоставляет сведения о форматировании. При изменении календаря изменяется и массив, возвращаемый этим методом.