DateTimeOffset.Parse 方法

定義

將日期和時間的指定字串表示,轉換為其相等的 DateTimeOffset

多載

Parse(String)

將日期、時間和位移的指定字串表示,轉換為其相等的 DateTimeOffset

Parse(ReadOnlySpan<Char>, IFormatProvider)

將字元範圍剖析為值。

Parse(String, IFormatProvider)

使用指定的特定文化特性格式資訊,將日期和時間的指定字串表示轉換為其相等的 DateTimeOffset

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

使用指定的特定文化特性格式資訊和格式樣式,將日期和時間的指定範圍表示轉換為其對等的 DateTimeOffset

Parse(String, IFormatProvider, DateTimeStyles)

使用指定的特定文化特性格式資訊和格式樣式,將日期和時間的指定字串表示轉換為其相等的 DateTimeOffset

備註

重要

日本曆法的紀元是以天皇的統治為基礎,因此有變更是正常的。 例如,2019 年 5 月 1 日之後,JapaneseCalendarJapaneseLunisolarCalendar 中將開始使用「令和」。 此變更對使用這些日曆的所有應用程式都有影響。 如需詳細資訊,以及判斷您的應用程式是否受到影響,請參閱 在 .NET 的日曆中處理新紀元。 如需在 Windows 系統上測試應用程式以確保其整備時間變更的相關資訊,請參閱 準備您的應用程式以進行日文紀元變更。 如需 .NET 中支援多個紀元的行事曆功能,以及使用支援多個紀元的行事歷時的最佳做法,請參閱 使用紀元

Parse(String)

將日期、時間和位移的指定字串表示,轉換為其相等的 DateTimeOffset

public:
 static DateTimeOffset Parse(System::String ^ input);
public static DateTimeOffset Parse (string input);
static member Parse : string -> DateTimeOffset
Public Shared Function Parse (input As String) As DateTimeOffset

參數

input
String

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

傳回

物件,與 input 中包含的日期和時間相等。

例外狀況

位移大於 14 小時或小於 -14 小時。

inputnull

input 不包含日期與時間的有效字串表示。

-或-

input 包含不含日期或時間之位移值的字串表示。

範例

下列範例會 Parse(String) 呼叫 方法來剖析數個日期和時間字串。 此範例會在文化特性為 en-us 的系統上,包含 2007 年 3 月 22 日輸出。

string dateString;
DateTimeOffset offsetDate;

// String with date only
dateString = "05/01/2008";
offsetDate = DateTimeOffset.Parse(dateString);
Console.WriteLine(offsetDate.ToString());

// String with time only
dateString = "11:36 PM";
offsetDate = DateTimeOffset.Parse(dateString);
Console.WriteLine(offsetDate.ToString());

// String with date and offset
dateString = "05/01/2008 +1:00";
offsetDate = DateTimeOffset.Parse(dateString);
Console.WriteLine(offsetDate.ToString());

// String with day abbreviation
dateString = "Thu May 01, 2008";
offsetDate = DateTimeOffset.Parse(dateString);
Console.WriteLine(offsetDate.ToString());
// String with date only
let dateString = "05/01/2008"
let offsetDate = DateTimeOffset.Parse dateString
printfn $"{offsetDate}"

// String with time only
let dateString = "11:36 PM"
let offsetDate = DateTimeOffset.Parse dateString
printfn $"{offsetDate}"

// String with date and offset
let dateString = "05/01/2008 +1:00"
let offsetDate = DateTimeOffset.Parse dateString
printfn $"{offsetDate}"

// String with day abbreviation
let dateString = "Thu May 01, 2008"
let offsetDate = DateTimeOffset.Parse(dateString)
printfn $"{offsetDate}"
Dim dateString As String
Dim offsetDate As DateTimeOffset

' String with date only
dateString = "05/01/2008"
offsetDate = DateTimeOffset.Parse(dateString)
Console.WriteLine(offsetDate.ToString())   ' Displays 5/1/2008 12:00:00 AM -07:00  

' String with time only
dateString = "11:36 PM"
offsetDate = DateTimeOffset.Parse(dateString)
Console.WriteLine(offsetDate.ToString())   ' Displays 3/26/2007 11:36:00 PM -07:00

' String with date and offset 
dateString = "05/01/2008 +7:00"
offsetDate = DateTimeOffset.Parse(dateString)
Console.WriteLine(offsetDate.ToString())   ' Displays 5/1/2008 12:00:00 AM +07:00

' String with day abbreviation
dateString = "Thu May 01, 2008"
offsetDate = DateTimeOffset.Parse(dateString)
Console.WriteLine(offsetDate.ToString())   ' Displays 5/1/2008 12:00:00 AM -07:00

備註

Parse(String) 剖析具有三個元素的字串,其可以依任何順序顯示,並以空白字元分隔。 下表顯示這三個元素。

元素 範例
<日期> "2/10/2007"
<Time> 「1:02:03 PM」
<Offset> "-7:30"

雖然每個元素都是選擇性的, < 但 Offset > 本身無法顯示。 它必須與日期 > 或 < 時間 > 一 < 起提供。 如果 < 遺漏 Date > ,則其預設值為目前日期。 如果 < 遺漏 Time > ,其預設值為上午 12:00:00。 如果 < Date > 存在,但其年份元件只包含兩位數,則會根據 屬性的值 Calendar.TwoDigitYearMax ,轉換成目前文化特性目前行事曆中的年份。 如果 < 遺漏 Offset > ,其預設值為當地時區的位移。 <位移 > 可以代表來自國際標準時間的負數或正位移, (UTC) 。 不論是哪一種情況, < Offset > 都必須包含符號符號。

字串是 input 使用物件中 DateTimeFormatInfo 針對目前文化特性初始化的格式資訊進行剖析。 若要剖析包含不一定對應至目前文化特性之格式設定的指定格式的字串,請使用 ParseExact 方法並提供格式規範。

另請參閱

適用於

Parse(ReadOnlySpan<Char>, IFormatProvider)

將字元範圍剖析為值。

public:
 static DateTimeOffset Parse(ReadOnlySpan<char> s, IFormatProvider ^ provider) = ISpanParsable<DateTimeOffset>::Parse;
public static DateTimeOffset Parse (ReadOnlySpan<char> s, IFormatProvider? provider);
static member Parse : ReadOnlySpan<char> * IFormatProvider -> DateTimeOffset
Public Shared Function Parse (s As ReadOnlySpan(Of Char), provider As IFormatProvider) As DateTimeOffset

參數

s
ReadOnlySpan<Char>

要剖析的字元範圍。

provider
IFormatProvider

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

傳回

剖析 s 的結果。

實作

適用於

Parse(String, IFormatProvider)

使用指定的特定文化特性格式資訊,將日期和時間的指定字串表示轉換為其相等的 DateTimeOffset

public:
 static DateTimeOffset Parse(System::String ^ input, IFormatProvider ^ formatProvider);
public:
 static DateTimeOffset Parse(System::String ^ input, IFormatProvider ^ formatProvider) = IParsable<DateTimeOffset>::Parse;
public static DateTimeOffset Parse (string input, IFormatProvider formatProvider);
public static DateTimeOffset Parse (string input, IFormatProvider? formatProvider);
static member Parse : string * IFormatProvider -> DateTimeOffset
Public Shared Function Parse (input As String, formatProvider As IFormatProvider) As DateTimeOffset

參數

input
String

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

formatProvider
IFormatProvider

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

傳回

物件,與 input 中包含的日期和時間相等,如 formatProvider 所指定。

實作

例外狀況

位移大於 14 小時或小於 -14 小時。

inputnull

input 不包含日期與時間的有效字串表示。

-或-

input 包含不含日期或時間之位移值的字串表示。

範例

下列範例會剖析針對 fr-fr 文化特性格式化的日期和時間字串,並使用本機系統的預設 en-us 文化特性加以顯示。

DateTimeFormatInfo fmt = new CultureInfo("fr-fr").DateTimeFormat;
string dateString;
DateTimeOffset offsetDate;

dateString = "03-12-07";
offsetDate = DateTimeOffset.Parse(dateString, fmt);
Console.WriteLine("{0} returns {1}",
                  dateString,
                  offsetDate.ToString());

dateString = "15/09/07 08:45:00 +1:00";
offsetDate = DateTimeOffset.Parse(dateString, fmt);
Console.WriteLine("{0} returns {1}",
                  dateString,
                  offsetDate.ToString());

dateString = "mar. 1 janvier 2008 1:00:00 +1:00";
offsetDate = DateTimeOffset.Parse(dateString, fmt);
Console.WriteLine("{0} returns {1}",
                  dateString,
                  offsetDate.ToString());
// The example displays the following output to the console:
//    03-12-07 returns 12/3/2007 12:00:00 AM -08:00
//    15/09/07 08:45:00 +1:00 returns 9/15/2007 8:45:00 AM +01:00
//    mar. 1 janvier 2008 1:00:00 +1:00 returns 1/1/2008 1:00:00 AM +01:00
let fmt = CultureInfo("fr-fr").DateTimeFormat
let dateString = "03-12-07"
let offsetDate = DateTimeOffset.Parse(dateString, fmt)
printfn $"{dateString} returns {offsetDate}"

let dateString = "15/09/07 08:45:00 +1:00"
let offsetDate = DateTimeOffset.Parse(dateString, fmt)
printfn $"{dateString} returns {offsetDate}"

let dateString = "mar. 1 janvier 2008 1:00:00 +1:00"
let offsetDate = DateTimeOffset.Parse(dateString, fmt)
printfn $"{dateString} returns {offsetDate}"

// The example displays the following output to the console:
//    03-12-07 returns 12/3/2007 12:00:00 AM -08:00
//    15/09/07 08:45:00 +1:00 returns 9/15/2007 8:45:00 AM +01:00
//    mar. 1 janvier 2008 1:00:00 +1:00 returns 1/1/2008 1:00:00 AM +01:00
Dim fmt As DateTimeFormatInfo = New CultureInfo("fr-fr").DateTimeFormat
Dim dateString As String
Dim offsetDate As DateTimeOffset

dateString = "03-12-07"
offsetDate = DateTimeOffset.Parse(dateString, fmt)
Console.WriteLine("{0} returns {1}", _
                  dateString, _
                  offsetDate.ToString())

dateString = "15/09/07 08:45:00 +1:00"
offsetDate = DateTimeOffset.Parse(dateString, fmt)
Console.WriteLine("{0} returns {1}", _
                  dateString, _
                  offsetDate.ToString())

dateString = "mar. 1 janvier 2008 1:00:00 +1:00" 
offsetDate = DateTimeOffset.Parse(dateString, fmt)
Console.WriteLine("{0} returns {1}", _
                  dateString, _
                  offsetDate.ToString())
' The example displays the following output to the console:
'    03-12-07 returns 12/3/2007 12:00:00 AM -08:00
'    15/09/07 08:45:00 +1:00 returns 9/15/2007 8:45:00 AM +01:00
'    mar. 1 janvier 2008 1:00:00 +1:00 returns 1/1/2008 1:00:00 AM +01:00

備註

這個方法會剖析具有三個元素的字串,這些元素可以依任何順序顯示,並以空白字元分隔。 下表顯示這三個元素。

元素 範例
<日期> "2/10/2007"
<Time> 「1:02:03 PM」
<Offset> "-7:30"

雖然每個元素都是選擇性的, < 但 Offset > 本身無法顯示。 它必須與日期 > 或 < 時間 > 一 < 起提供。 如果 < 遺漏 Date > ,則其預設值為目前日期。 如果 < Date > 存在,但其年份元件只包含兩位數,則會根據 屬性的值 Calendar.TwoDigitYearMax ,將它轉換成參數目前行事曆中的年份 provider 。 如果 < 遺漏 Time > ,其預設值為上午 12:00:00。 如果 < 遺漏 Offset > ,其預設值為當地時區的位移。 <位移 > 可以代表來自國際標準時間的負數或正位移, (UTC) 。 不論是哪一種情況, < Offset > 都必須包含符號符號。

這三個元素的格式是由 formatProvider 參數所定義,可以是下列其中一項:

如果 formatprovidernull ,則會 CultureInfo 使用對應至目前文化特性的物件。

Offset > 中使用的 < 正負號必須是 + 或 -。 它不是由 參數物件的 formatProviderNegativeSign 屬性 NumberFormatInfoPositiveSign 定義。

另請參閱

適用於

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

使用指定的特定文化特性格式資訊和格式樣式,將日期和時間的指定範圍表示轉換為其對等的 DateTimeOffset

public static DateTimeOffset Parse (ReadOnlySpan<char> input, IFormatProvider? formatProvider = default, System.Globalization.DateTimeStyles styles = System.Globalization.DateTimeStyles.None);
public static DateTimeOffset Parse (ReadOnlySpan<char> input, IFormatProvider formatProvider = default, System.Globalization.DateTimeStyles styles = System.Globalization.DateTimeStyles.None);
static member Parse : ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles -> DateTimeOffset
Public Shared Function Parse (input As ReadOnlySpan(Of Char), Optional formatProvider As IFormatProvider = Nothing, Optional styles As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTimeOffset

參數

input
ReadOnlySpan<Char>

包含字元的範圍,其表示要轉換的日期和時間。

formatProvider
IFormatProvider

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

styles
DateTimeStyles

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

傳回

物件,與 input 中包含的日期和時間相等,如 formatProviderstyles 所指定。

適用於

Parse(String, IFormatProvider, DateTimeStyles)

使用指定的特定文化特性格式資訊和格式樣式,將日期和時間的指定字串表示轉換為其相等的 DateTimeOffset

public:
 static DateTimeOffset Parse(System::String ^ input, IFormatProvider ^ formatProvider, System::Globalization::DateTimeStyles styles);
public static DateTimeOffset Parse (string input, IFormatProvider formatProvider, System.Globalization.DateTimeStyles styles);
public static DateTimeOffset Parse (string input, IFormatProvider? formatProvider, System.Globalization.DateTimeStyles styles);
static member Parse : string * IFormatProvider * System.Globalization.DateTimeStyles -> DateTimeOffset
Public Shared Function Parse (input As String, formatProvider As IFormatProvider, styles As DateTimeStyles) As DateTimeOffset

參數

input
String

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

formatProvider
IFormatProvider

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

styles
DateTimeStyles

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

傳回

物件,與 input 中包含的日期和時間相等,如 formatProviderstyles 所指定。

例外狀況

位移大於 14 小時或小於 -14 小時。

-或-

styles 不是有效的 DateTimeStyles 值。

-或-

styles 包含不支援的 DateTimeStyles 值。

-或-

styles 包含無法搭配使用的 DateTimeStyles 值。

inputnull

input 不包含日期與時間的有效字串表示。

-或-

input 包含不含日期或時間之位移值的字串表示。

範例

下列範例說明將 、 DateTimeStyles.AssumeUniversal 和 值傳遞 DateTimeStyles.AssumeLocalstyles 方法參數 Parse(String, IFormatProvider, DateTimeStyles)DateTimeStyles.AdjustToUniversal 的效果。

string dateString;
DateTimeOffset offsetDate;

dateString = "05/01/2008 6:00:00";
// Assume time is local
offsetDate = DateTimeOffset.Parse(dateString, null, DateTimeStyles.AssumeLocal);
Console.WriteLine(offsetDate.ToString());   // Displays 5/1/2008 6:00:00 AM -07:00

// Assume time is UTC
offsetDate = DateTimeOffset.Parse(dateString, null, DateTimeStyles.AssumeUniversal);
Console.WriteLine(offsetDate.ToString());   // Displays 5/1/2008 6:00:00 AM +00:00

// Parse and convert to UTC
dateString = "05/01/2008 6:00:00AM +5:00";
offsetDate = DateTimeOffset.Parse(dateString, null, DateTimeStyles.AdjustToUniversal);
Console.WriteLine(offsetDate.ToString());   // Displays 5/1/2008 1:00:00 AM +00:00
let dateString = "05/01/2008 6:00:00"
// Assume time is local
let offsetDate = DateTimeOffset.Parse(dateString, null, DateTimeStyles.AssumeLocal)
printfn $"{offsetDate}"   // Displays 5/1/2008 6:00:00 AM -07:00

// Assume time is UTC
let offsetDate = DateTimeOffset.Parse(dateString, null, DateTimeStyles.AssumeUniversal)
printfn $"{offsetDate}"   // Displays 5/1/2008 6:00:00 AM +00:00

// Parse and convert to UTC
let dateString = "05/01/2008 6:00:00AM +5:00"
let offsetDate = DateTimeOffset.Parse(dateString, null, DateTimeStyles.AdjustToUniversal)
printfn $"{offsetDate}"   // Displays 5/1/2008 1:00:00 AM +00:00
Dim dateString As String
Dim offsetDate As DateTimeOffset

dateString = "05/01/2008 6:00:00"
' Assume time is local 
offsetDate = DateTimeOffset.Parse(dateString, Nothing, DateTimeStyles.AssumeLocal)
Console.WriteLine(offsetDate.ToString())   ' Displays 5/1/2008 6:00:00 AM -07:00

' Assume time is UTC
offsetDate = DateTimeOffset.Parse(dateString, Nothing, DateTimeStyles.AssumeUniversal)
Console.WriteLine(offsetDate.ToString())   ' Displays 5/1/2008 6:00:00 AM +00:00

' Parse and convert to UTC 
dateString = "05/01/2008 6:00:00AM +5:00"
offsetDate = DateTimeOffset.Parse(dateString, Nothing, DateTimeStyles.AdjustToUniversal)
Console.WriteLine(offsetDate.ToString())   ' Displays 5/1/2008 1:00:00 AM +00:00

備註

這個方法會剖析具有三個元素的字串,這些元素可以依任何順序顯示,並以空白字元分隔。 下表顯示這三個元素。

元素 範例
<日期> "2/10/2007"
<Time> 「1:02:03 PM」
<Offset> "-7:30"

雖然每個元素都是選擇性的, < 但 Offset > 本身無法顯示。 它必須與日期 > 或 < 時間 > 一 < 起提供。 如果 < 遺漏 Date > ,則其預設值為目前日期。 如果 < Date > 存在,但其年份元件只包含兩位數,則會根據 屬性的值 Calendar.TwoDigitYearMax ,將它轉換成參數目前行事曆中的年份 provider 。 如果 < 遺漏 Time > ,其預設值為上午 12:00:00。 如果 < 遺漏 Offset > ,則其預設值為當地時區的位移,或是 TimeSpan.Zero 參數 DateTimeStyles.AdjustToUniversal 中指定的 stylesDateTimeStyles.AssumeUniversal 值。 如果 < 位移 > 存在,它可以代表來自國際標準時間的負數或正位移, (UTC) 。 不論是哪一種情況, < Offset > 都必須包含符號符號。

這三個元素的格式是由 formatProvider 參數所定義,可以是下列其中一項:

每個元素也可以由開頭或尾端空白字元括住, < 而日期和時間 ><> 元素可以包含內部空白字元 (,例如 6:00:00) 。 <只有 Offset > 元件不能包含內部空白字元。

如果 formatprovidernull ,則會 CultureInfo 使用對應至目前文化特性的物件。

Offset > 中使用的 < 正負號必須是 + 或 -。 它不是由 PositiveSign 參數所傳回物件的 NumberFormatInfoNegativeSign 屬性所 formatProvider 定義。

下表顯示支援的列舉成員 System.Globalization.DateTimeStyles

DateTimeStyles 成員 描述
AdjustToUniversal 剖析 所 input 表示的字串,並視需要將其轉換成 UTC。 它相當於剖析字串,然後呼叫 DateTimeOffset.ToUniversalTimeDateTimeOffset 回物件的 方法。
AllowInnerWhite 雖然有效,但會忽略此值。 日期和時間 ><> 元素中 < 允許內部空白字元。
AllowLeadingWhite 雖然有效,但會忽略此值。 在剖析字串中的每個元件前面允許前置空白字元。
AllowTrailingWhite 雖然有效,但會忽略此值。 在剖析字串中的每個元件前面允許尾端空白字元。
AllowWhiteSpaces 此為預設行為。 無法藉由提供更嚴格的 DateTimeStyles 列舉值來覆寫它,例如 DateTimeStyles.None
AssumeLocal 指出,如果 input 參數缺少 < Offset > 元素,則應該提供當地時區的位移。 這是 方法的預設行為 Parse
AssumeUniversal 指出,如果 input 參數缺少 < Offset > 元素,則應該提供 UTC 位移 (00:00) 。
None 雖然有效,但會忽略此值,而且沒有任何作用。
RoundtripKind DateTimeOffset因為 結構不包含 Kind 屬性,所以這個值沒有任何作用。

DateTimeStyles.NoCurrentDateDefault僅支援值。 ArgumentException如果參數中包含這個值, styles 則會擲回 。

另請參閱

適用於