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

包含要转换的日期和时间的字符串。

返回

DateTimeOffset

一个对象,它等效于 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) 分析一个字符串,其中包含三个元素,这些元素可以按任意顺序显示,并由空格分隔。 下表显示了这三个元素。

元素 示例
<Date> "2/10/2007"
<Time> “1:02:03 PM”
<Offset> "-7:30"

虽然其中每个元素都是可选的, <Offset> 但不能单独显示。 它必须与任一或两<Time>者<Date>一起提供。 如果 <Date> 缺少,则其默认值为当前日期。 如果 <Time> 缺少,则其默认值为上午 12:00:00。 如果 <Date> 存在,但其年份组件仅包含两位数字,则根据属性的值 Calendar.TwoDigitYearMax 将其转换为当前区域性当前日历中的一年。 如果 <Offset> 缺少,则其默认值为本地时区的偏移量。 <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

参数

provider
IFormatProvider

返回

DateTimeOffset

分析 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 的区域性特定的格式信息。

返回

DateTimeOffset

一个对象,它等效于 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

注解

此方法分析一个字符串,其中包含三个元素,这些元素可以按任意顺序显示,并由空格分隔。 下表显示了这三个元素。

元素 示例
<Date> "2/10/2007"
<Time> “1:02:03 PM”
<Offset> "-7:30"

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

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

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

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

另请参阅

适用于

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

返回

DateTimeOffset

一个对象,它等效于 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

返回

DateTimeOffset

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

例外

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

  • 或 -

styles 不是有效的 DateTimeStyles 值。

  • 或 -

styles 包含不支持的 DateTimeStyles 值。

  • 或 -

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

inputnull

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

  • 或 -

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

示例

以下示例演示了将和DateTimeStyles.AssumeUniversalDateTimeStyles.AdjustToUniversal值传递给stylesDateTimeStyles.AssumeLocal方法参数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

注解

此方法分析一个字符串,其中包含三个元素,这些元素可以按任意顺序显示,并由空格分隔。 下表显示了这三个元素。

元素 示例
<Date> "2/10/2007"
<Time> “下午 1:02:03”
<Offset> "-7:30"

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

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

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

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

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

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

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

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

另请参阅

适用于