DateTimeFormatInfo.GetAllDateTimePatterns 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回可格式化日期和時間值的標準模式。
多載
GetAllDateTimePatterns() |
傳回可格式化日期和時間值的所有標準模式。 |
GetAllDateTimePatterns(Char) |
傳回可以使用所指定標準格式字串來格式化日期和時間值的所有模式。 |
GetAllDateTimePatterns()
傳回可格式化日期和時間值的所有標準模式。
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 數位中使用自訂格式字串。 不過,如果您這樣做,該格式設定作業中傳回的日期和時間值的字串表示不一定會由 和 TryParse
方法成功Parse
剖析。 因此,您無法假設 方法傳 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)
傳回可以使用所指定標準格式字串來格式化日期和時間值的所有模式。
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 數位中使用自訂格式字串。 不過,如果您這樣做,該格式設定作業中傳回的日期和時間值的字串表示不一定會由 和 TryParse
方法成功Parse
剖析。 因此,您無法假設 方法傳 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 特性行事曆。 如果行事曆變更,這個方法傳回的陣列也會變更。