本文為機器翻譯文章。如需檢視英文版,請選取 [原文] 核取方塊。您也可以將滑鼠指標移到文字上,即可在快顯視窗顯示英文原文。
譯文
原文

DateTime.TryParseExact 方法 (String, String[], IFormatProvider, DateTimeStyles, DateTime)

 

使用指定的格式陣列、特定文化特性格式資訊以及樣式,將日期和時間的指定字串表示,轉換為其相等的 DateTime 字串表示的格式必須至少完全符合其中一個指定格式。 此方法會傳回值,這個值表示轉換是否成功。

命名空間:   System
組件:  mscorlib (於 mscorlib.dll)

public static bool TryParseExact(
	string s,
	string[] formats,
	IFormatProvider provider,
	DateTimeStyles style,
	out DateTime result
)

參數

s
Type: System.String

字串,包含要轉換的日期和時間。

formats
Type: System.String[]

s 允許的格式陣列。 如需詳細資訊,請參閱<備註>一節。

provider
Type: System.IFormatProvider

提供關於 s 之特定文化特性格式資訊的物件。

style
Type: System.Globalization.DateTimeStyles

列舉值的位元組合,表示 s 所允許的格式。 一般會指定的值是 DateTimeStyles.None

result
Type: System.DateTime

如果轉換成功,這個方法會傳回包含與 DateTime 中內含之日期與時間相等的 s 值;如果轉換失敗,則為 MinValue 如果 sformatsnullsformats 的一個項目為空字串,或是 s 的格式沒有與 formats 中的至少一個格式模式所指定的內容完全相同,則此轉換作業會失敗。 這個參數會以未初始化的狀態傳遞。

傳回值

Type: System.Boolean

如果 true 參數轉換成功,則為 s,否則為 false

Exception Condition
ArgumentException

styles 不是有效的 DateTimeStyles 值。

-或-

styles 包含 DateTimeStyles 值的無效組合 (例如,AssumeLocalAssumeUniversal)。

DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)方法剖析符合指派給任何的模式一個日期的字串表示formats參數。 就像DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles)方法,除了TryParseExact方法不會擲回例外狀況如果轉換失敗。

s參數包含要剖析的日期和時間。 如果s參數包含僅一次,而且沒有日期,目前的日期會使用,除非style參數包含DateTimeStyles.NoCurrentDateDefault旗標,在此情況下的預設日期 (DateTime.Date.MinValue) 使用。 如果s參數包含的日期沒有時間、 午夜 (00: 00:00) 使用。 style參數也會決定是否s參數可以包含前置、 內部或尾端空格字元而不是所允許的格式字串中的其中一個formats

如果s包含沒有時區資訊Kind屬性傳回之DateTime物件是DateTimeKind.Unspecified 此行為可以透過變更DateTimeStyles.AssumeLocal旗標,以傳回DateTime值的Kind屬性是DateTimeKind.Local,或使用DateTimeStyles.AssumeUniversalDateTimeStyles.AdjustToUniversal旗標,以傳回DateTime值的Kind屬性是DateTimeKind.Utc 必要時,如果 s 包含時區資訊,將時間會轉換為本機時間而Kind屬性傳回之DateTime物件設定為DateTimeKind.Local 此行為可以透過變更DateTimeStyles.RoundtripKind旗標不當地時間轉換成國際標準時間 (UTC),並設定Kind屬性DateTimeKind.Utc

formats參數包含陣列的模式,其中s必須完全符合,剖析作業會成功。 中的模式formats參數組成一或多個自訂格式規範,從自訂日期和時間格式字串資料表或單一標準格式規範,它會識別預先定義的模式,從標準日期和時間格式字串資料表。

如果您未使用自訂格式模式中的日期或時間分隔符號,使用的文化特性而異provider參數和寬形式的每個自訂格式規範。 例如,如果您想要指定模式中,指定寬表單中,"HH",而不是較窄的表單中,"H"。

特定日期和時間符號和字串 (例如一週中特定語言的名稱) 用於s會由provider參數,因為是精確的格式s如果format是標準格式規範的字串。 provider參數可以是下列任一項︰

如果providernullCultureInfo使用對應至目前的文化特性的物件。

styles參數包含一個或多個成員DateTimeStyles列舉型別,以決定是否和位置所未定義空白字元format可以出現在s及控制精確的剖析作業行為。 下表描述如何每個成員的DateTimeStyles列舉型別會影響的作業TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)方法。

DateTimeStyles 成員

說明

AdjustToUniversal

剖析s而且,如果有必要,將它轉換成 UTC。 如果s包含時區時差,或如果s未包含任何時區資訊但styles包含DateTimeStyles.AssumeLocal旗標,方法會剖析字串,呼叫ToUniversalTime轉換傳回DateTime值,以 UTC,並設定Kind屬性DateTimeKind.Utc 如果s表示它代表 UTC,或如果s不含時區資訊但styles包含DateTimeStyles.AssumeUniversal旗標,方法剖析字串中,不執行對傳回的任何時區轉換DateTime值,並設定Kind屬性DateTimeKind.Utc 在其他情況下,此旗標會有任何作用。

AllowInnerWhite

指定未定義的泛空白字元format之間任何個別的日期或時間項目可能會出現。

AllowLeadingWhite

指定未定義的泛空白字元format可以出現在開頭s

AllowTrailingWhite

指定未定義的泛空白字元format可以出現在結尾s

AllowWhiteSpaces

指定s可能包含前置、 內部和尾端空白字元未定義format

AssumeLocal

指定當s缺少任何時區資訊,則會假設為代表當地時間。 除非DateTimeStyles.AdjustToUniversal旗標已存在,Kind屬性傳回之DateTime值設定為DateTimeKind.Local

AssumeUniversal

指定當s缺少任何時區資訊,它會假設來表示 UTC。 除非DateTimeStyles.AdjustToUniversal旗標存在,則方法會將轉換傳回DateTime值與 utc 之間的當地時間和設定其Kind屬性DateTimeKind.Local

NoCurrentDateDefault

如果s包含時間日期的詳細資訊,不傳回值的日期會設定為DateTime.MinValue.Date

None

s參數會剖析使用預設值。 該位於以外的任何空格format允許。 如果s缺少傳回之日期的日期元件,DateTime值設定為 1/1/0001。 如果s包含沒有時區資訊Kind屬性傳回之DateTime物件設定為DateTimeKind.Unspecified 如果時區資訊存在於s,時間會轉換為本機時間而Kind屬性傳回之DateTime物件設定為DateTimeKind.Local

RoundtripKind

包含時區資訊的字串,請嘗試避免轉換為DateTime值與它Kind屬性設定為DateTimeKind.Local 主要,此旗標可避免 UTC 時間轉換為本地時間。

呼叫端注意事項︰

在.NET Framework 4、TryParseExact方法會傳回false小時元件和 AM/PM 指示項不在協議中,如果包含要剖析的字串。 在.NET Framework 3.5和舊版中,AM/PM 指示項會被忽略。

下列範例會使用DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)方法,以確定可以成功剖析中的可能格式的數字的字串。

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", 
                         "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", 
                         "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", 
                         "M/d/yyyy h:mm", "M/d/yyyy h:mm", 
                         "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"};
      string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", 
                              "5/1/2009 6:32:00", "05/01/2009 06:32", 
                              "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"}; 
      DateTime dateValue;

      foreach (string dateString in dateStrings)
      {
         if (DateTime.TryParseExact(dateString, formats, 
                                    new CultureInfo("en-US"), 
                                    DateTimeStyles.None, 
                                    out dateValue))
            Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
         else
            Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
      }
   }
}
// The example displays the following output:
//       Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
//       Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
//       Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
//       Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
//       Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
//       Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.

通用 Windows 平台
自 8 起供應
.NET Framework
自 2.0 起供應
可攜式類別庫
提供支援︰ 可攜式 .NET 平台
Silverlight
自 2.0 起供應
Windows Phone Silverlight
自 7.0 起供應
Windows Phone
自 8.1 起供應
回到頁首
顯示: