通过


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)

Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs

将日期、时间和偏移的指定字符串表示形式转换为等效 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) 该方法来分析多个日期和时间字符串。 该示例包括 2007 年 3 月 22 日提供的输出,其区域性为 en-us的系统。

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"
<时间> “1:02:03 PM”
<抵消> "-7:30"

虽然其中每个元素都是可选的, <但 Offset> 本身无法显示。 它必须与日期>或<时间>一起<提供。 如果 <缺少 Date> ,则其默认值为当前日期。 如果 <缺少时间> ,则其默认值为上午 12:00:00。 如果 <Date> 存在,但其年份组件仅包含两位数,则会根据属性的值 Calendar.TwoDigitYearMax 转换为当前区域性当前日历中的一年。 如果 <缺少 Offset> ,则其默认值为本地时区的偏移量。 <偏移> 量可以表示协调世界时(UTC)的负偏移量或正偏移量。 在任一情况下, <Offset> 都必须包含符号符号。

input 字符串通过使用为当前区域性初始化的对象中的 DateTimeFormatInfo 格式设置信息进行分析。 若要分析包含不一定对应于当前区域性格式的指定格式的字符串,请使用 ParseExact 该方法并提供格式说明符。

另请参阅

适用于

Parse(ReadOnlySpan<Char>, IFormatProvider)

Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs

将字符的范围分析为值。

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)

Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs

使用指定的区域性特定格式信息将日期和时间的指定字符串表示形式转换为等效 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"
<时间> “1:02:03 PM”
<抵消> "-7:30"

虽然其中每个元素都是可选的, <但 Offset> 本身无法显示。 它必须与日期>或<时间>一起<提供。 如果 <缺少 Date> ,则其默认值为当前日期。 如果 <Date> 存在,但其年份组件仅包含两位数字,则根据属性的值Calendar.TwoDigitYearMax将其转换为参数的当前日历中的provider一年。 如果 <缺少时间> ,则其默认值为上午 12:00:00。 如果 <缺少 Offset> ,则其默认值为本地时区的偏移量。 <偏移> 量可以表示协调世界时(UTC)的负偏移量或正偏移量。 在任一情况下, <Offset> 都必须包含符号符号。

这三个元素的格式由 formatProvider 参数定义,可以是以下任一元素:

null如果是formatproviderCultureInfo则使用对应于当前区域性的对象。

Offset> 中使用的<正号或负号必须是 + 或 -。 它不是由PositiveSign参数对象的formatProviderNegativeSign属性NumberFormatInfo定义的。

另请参阅

适用于

Parse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs

使用指定的区域性特定格式信息和格式样式将日期和时间的指定范围表示形式转换为其 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的典型值为 。

返回

一个对象,它等效于由和styles指定的formatProvider日期和时间中包含的input日期和时间。

适用于

Parse(String, IFormatProvider, DateTimeStyles)

Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs
Source:
DateTimeOffset.cs

使用指定的区域性特定格式信息和格式样式将日期和时间的指定字符串表示形式转换为等效 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的典型值为 。

返回

一个对象,它等效于由和styles指定的formatProvider日期和时间中包含的input日期和时间。

例外

偏移量大于 14 小时或小于 -14 小时。

-或-

styles 不是有效 DateTimeStyles 值。

-或-

styles 包括不 DateTimeStyles 受支持的值。

-或-

styles 包含 DateTimeStyles 不能一起使用的值。

inputnull

input 不包含日期和时间的有效字符串表示形式。

-或-

input 包含不带日期或时间的偏移值的字符串表示形式。

示例

下面的示例演示了DateTimeStyles.AssumeLocal将和DateTimeStyles.AssumeUniversalDateTimeStyles.AdjustToUniversal值传递给styles方法参数Parse(String, IFormatProvider, DateTimeStyles)的效果。

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"
<时间> “1:02:03 PM”
<抵消> "-7:30"

虽然其中每个元素都是可选的, <但 Offset> 本身无法显示。 它必须与日期>或<时间>一起<提供。 如果 <缺少 Date> ,则其默认值为当前日期。 如果 <Date> 存在,但其年份组件仅包含两位数字,则根据属性的值Calendar.TwoDigitYearMax将其转换为参数的当前日历中的provider一年。 如果 <缺少时间> ,则其默认值为上午 12:00:00。 如果<缺少 Offset>,则其默认值为本地时区的偏移量,或者在TimeSpan.ZeroDateTimeStyles.AdjustToUniversal参数中styles指定或DateTimeStyles.AssumeUniversal值。 如果 <存在偏移> 量,它可以表示协调世界时(UTC)的负偏移量或正偏移量。 在任一情况下, <Offset> 都必须包含符号符号。

这三个元素的格式由 formatProvider 参数定义,可以是以下任一元素:

每个元素也可以由前导空格或尾随空格括起来,<日期和时间><>元素可以包含内部空白(如 6:00:00)。 <只有 Offset> 组件不能包含内部空白。

null如果是formatproviderCultureInfo则使用对应于当前区域性的对象。

Offset> 中使用的<正号或负号必须是 + 或 -。 它不是由PositiveSign参数返回formatProvider的对象或NegativeSign属性NumberFormatInfo定义的。

下表显示了支持的枚举的成员 System.Globalization.DateTimeStyles

DateTimeStyles 成员 说明
AdjustToUniversal 分析由 input 该字符串表示的字符串,并在必要时将其转换为 UTC。 它等效于分析字符串,然后调用 DateTimeOffset.ToUniversalTime 返回 DateTimeOffset 的对象的方法。
AllowInnerWhite 虽然有效,但忽略此值。 日期和时间><>元素中<允许内部空格。
AllowLeadingWhite 虽然有效,但忽略此值。 允许在分析的字符串中的每个组件前面使用前导空格。
AllowTrailingWhite 虽然有效,但忽略此值。 允许在分析字符串中的每个组件前面使用尾随空格。
AllowWhiteSpaces 这是默认行为。 无法通过提供更严格的 DateTimeStyles 枚举值(例如 DateTimeStyles.None)来重写它。
AssumeLocal 指示,如果 input 参数缺少 <Offset> 元素,则应提供本地时区的偏移量。 这是该方法的默认行为 Parse
AssumeUniversal 指示,如果 input 参数缺少 <Offset> 元素,则应提供 UTC 偏移量(00:00)。
None 虽然有效,但此值将被忽略,并且不起作用。
RoundtripKind DateTimeOffset由于结构不包含属性Kind,因此此值不起作用。

DateTimeStyles.NoCurrentDateDefault仅支持该值。 如果在参数中包含styles此值,则会引发 anArgumentException

另请参阅

适用于