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) 方法以分析多个日期和时间字符串。 该示例包括 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"
<时间> “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

注解

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

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

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

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

如果 formatprovidernull,则 CultureInfo 使用与当前区域性对应的 对象。

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

另请参阅

适用于

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.AssumeLocalstyles 方法的 Parse(String, IFormatProvider, DateTimeStyles) 参数的效果。DateTimeStyles.AdjustToUniversalDateTimeStyles.AssumeUniversal

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"
<时间> “1:02:03 PM”
<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 参数定义,可以是以下任一项:

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

如果 formatprovidernull,则 CultureInfo 使用与当前区域性对应的 对象。

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

下表显示了支持的 枚举的成员 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仅不支持 值。 ArgumentException如果参数中包含styles此值,则会引发 。

另请参阅

适用于