TimeSpan.Parse 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将时间间隔的字符串表示形式转换为等效的 TimeSpan。
重载
Parse(String) |
将时间间隔的字符串表示形式转换为等效的 TimeSpan。 |
Parse(ReadOnlySpan<Char>, IFormatProvider) |
使用指定的区域性特定格式信息,将时间间隔的范围表示形式转换为其等效的 TimeSpan。 |
Parse(String, IFormatProvider) |
使用指定的区域性特定格式信息,将时间间隔的字符串表示形式转换为其等效的 TimeSpan。 |
Parse(String)
- Source:
- TimeSpan.cs
- Source:
- TimeSpan.cs
- Source:
- TimeSpan.cs
将时间间隔的字符串表示形式转换为等效的 TimeSpan。
public:
static TimeSpan Parse(System::String ^ s);
public static TimeSpan Parse (string s);
static member Parse : string -> TimeSpan
Public Shared Function Parse (s As String) As TimeSpan
参数
- s
- String
一个字符串,用于指定进行转换的时间间隔。
返回
与 s
对应的时间间隔。
例外
s
为 null
。
s
的格式无效。
示例
以下示例使用 Parse 方法将字符串数组中的每个元素转换为 TimeSpan 值。 它将当前系统区域性更改为“克罗地亚 (”hr-HR“) 和英语 -美国 (”en-US“) ,以说明当前系统区域性如何影响分析操作。
using System;
using System.Globalization;
using System.Threading;
public class Example
{
public static void Main()
{
string[] values = { "6", "6:12", "6:12:14", "6:12:14:45",
"6.12:14:45", "6:12:14:45.3448",
"6:12:14:45,3448", "6:34:14:45" };
string[] cultureNames = { "hr-HR", "en-US"};
// Change the current culture.
foreach (string cultureName in cultureNames)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName);
Console.WriteLine("Current Culture: {0}",
Thread.CurrentThread.CurrentCulture.Name);
foreach (string value in values)
{
try {
TimeSpan ts = TimeSpan.Parse(value);
Console.WriteLine("{0} --> {1}", value, ts.ToString("c"));
}
catch (FormatException) {
Console.WriteLine("{0}: Bad Format", value);
}
catch (OverflowException) {
Console.WriteLine("{0}: Overflow", value);
}
}
Console.WriteLine();
}
}
}
// The example displays the following output:
// Current Culture: hr-HR
// 6 --> 6.00:00:00
// 6:12 --> 06:12:00
// 6:12:14 --> 06:12:14
// 6:12:14:45 --> 6.12:14:45
// 6.12:14:45 --> 6.12:14:45
// 6:12:14:45.3448: Bad Format
// 6:12:14:45,3448 --> 6.12:14:45.3448000
// 6:34:14:45: Overflow
//
// Current Culture: en-US
// 6 --> 6.00:00:00
// 6:12 --> 06:12:00
// 6:12:14 --> 06:12:14
// 6:12:14:45 --> 6.12:14:45
// 6.12:14:45 --> 6.12:14:45
// 6:12:14:45.3448 --> 6.12:14:45.3448000
// 6:12:14:45,3448: Bad Format
// 6:34:14:45: Overflow
open System
open System.Globalization
open System.Threading
let values =
[| "6"; "6:12"; "6:12:14"; "6:12:14:45"
"6.12:14:45"; "6:12:14:45.3448"
"6:12:14:45,3448"; "6:34:14:45" |]
let cultureNames = [| "hr-HR"; "en-US" |]
// Change the current culture.
for cultureName in cultureNames do
Thread.CurrentThread.CurrentCulture <- CultureInfo cultureName
printfn $"Current Culture: {Thread.CurrentThread.CurrentCulture.Name}"
for value in values do
try
let ts = TimeSpan.Parse value
printfn $"{value} --> {ts:c}"
with
| :? FormatException ->
printfn $"{value}: Bad Format"
| :? OverflowException ->
printfn $"{value}: Overflow"
printfn ""
// The example displays the following output:
// Current Culture: hr-HR
// 6 --> 6.00:00:00
// 6:12 --> 06:12:00
// 6:12:14 --> 06:12:14
// 6:12:14:45 --> 6.12:14:45
// 6.12:14:45 --> 6.12:14:45
// 6:12:14:45.3448: Bad Format
// 6:12:14:45,3448 --> 6.12:14:45.3448000
// 6:34:14:45: Overflow
//
// Current Culture: en-US
// 6 --> 6.00:00:00
// 6:12 --> 06:12:00
// 6:12:14 --> 06:12:14
// 6:12:14:45 --> 6.12:14:45
// 6.12:14:45 --> 6.12:14:45
// 6:12:14:45.3448 --> 6.12:14:45.3448000
// 6:12:14:45,3448: Bad Format
// 6:34:14:45: Overflow
Imports System.Globalization
Imports System.Threading
Module Example
Public Sub Main()
Dim values() As String = { "6", "6:12", "6:12:14", "6:12:14:45",
"6.12:14:45", "6:12:14:45.3448",
"6:12:14:45,3448", "6:34:14:45" }
Dim cultureNames() As String = { "hr-HR", "en-US"}
' Change the current culture.
For Each cultureName As String In cultureNames
Thread.CurrentThread.CurrentCulture = New CultureInfo(cultureName)
Console.WriteLine("Current Culture: {0}",
Thread.CurrentThread.CurrentCulture.Name)
For Each value As String In values
Try
Dim ts As TimeSpan = TimeSpan.Parse(value)
Console.WriteLine("{0} --> {1}", value, ts.ToString("c"))
Catch e As FormatException
Console.WriteLine("{0}: Bad Format", value)
Catch e As OverflowException
Console.WriteLine("{0}: Overflow", value)
End Try
Next
Console.WriteLine()
Next
End Sub
End Module
' The example displays the following output:
' Current Culture: hr-HR
' 6 --> 6.00:00:00
' 6:12 --> 06:12:00
' 6:12:14 --> 06:12:14
' 6:12:14:45 --> 6.12:14:45
' 6.12:14:45 --> 6.12:14:45
' 6:12:14:45.3448: Bad Format
' 6:12:14:45,3448 --> 6.12:14:45.3448000
' 6:34:14:45: Overflow
'
' Current Culture: en-US
' 6 --> 6.00:00:00
' 6:12 --> 06:12:00
' 6:12:14 --> 06:12:14
' 6:12:14:45 --> 6.12:14:45
' 6.12:14:45 --> 6.12:14:45
' 6:12:14:45.3448 --> 6.12:14:45.3448000
' 6:12:14:45,3448: Bad Format
' 6:34:14:45: Overflow
注解
有关此 API 的详细信息,请参阅 TimeSpan.Parse 的补充 API 说明。
适用于
Parse(ReadOnlySpan<Char>, IFormatProvider)
- Source:
- TimeSpan.cs
- Source:
- TimeSpan.cs
- Source:
- TimeSpan.cs
使用指定的区域性特定格式信息,将时间间隔的范围表示形式转换为其等效的 TimeSpan。
public static TimeSpan Parse (ReadOnlySpan<char> input, IFormatProvider? formatProvider = default);
public static TimeSpan Parse (ReadOnlySpan<char> input, IFormatProvider formatProvider = default);
static member Parse : ReadOnlySpan<char> * IFormatProvider -> TimeSpan
Public Shared Function Parse (input As ReadOnlySpan(Of Char), Optional formatProvider As IFormatProvider = Nothing) As TimeSpan
参数
- input
- ReadOnlySpan<Char>
一个范围,包含表示要转换的时间间隔的字符。
- formatProvider
- IFormatProvider
一个提供区域性特定的格式设置信息的对象。
返回
与 input
对应的时间间隔,由 formatProvider
指定。
实现
适用于
Parse(String, IFormatProvider)
- Source:
- TimeSpan.cs
- Source:
- TimeSpan.cs
- Source:
- TimeSpan.cs
使用指定的区域性特定格式信息,将时间间隔的字符串表示形式转换为其等效的 TimeSpan。
public:
static TimeSpan Parse(System::String ^ input, IFormatProvider ^ formatProvider);
public:
static TimeSpan Parse(System::String ^ input, IFormatProvider ^ formatProvider) = IParsable<TimeSpan>::Parse;
public static TimeSpan Parse (string input, IFormatProvider formatProvider);
public static TimeSpan Parse (string input, IFormatProvider? formatProvider);
static member Parse : string * IFormatProvider -> TimeSpan
Public Shared Function Parse (input As String, formatProvider As IFormatProvider) As TimeSpan
参数
- input
- String
一个字符串,用于指定进行转换的时间间隔。
- formatProvider
- IFormatProvider
一个提供区域性特定的格式设置信息的对象。
返回
与 input
对应的时间间隔,由 formatProvider
指定。
实现
例外
input
为 null
。
input
的格式无效。
示例
以下示例定义对象的数组 CultureInfo ,并在调用 Parse(String, IFormatProvider) 方法时使用每个对象来分析字符串数组中的元素。 该示例演示了特定区域性的约定如何影响格式设置操作。
using System;
using System.Globalization;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string[] values = { "6", "6:12", "6:12:14", "6:12:14:45",
"6.12:14:45", "6:12:14:45.3448",
"6:12:14:45,3448", "6:34:14:45" };
CultureInfo[] cultures = { new CultureInfo("en-US"),
new CultureInfo("ru-RU"),
CultureInfo.InvariantCulture };
string header = String.Format("{0,-17}", "String");
foreach (CultureInfo culture in cultures)
header += culture.Equals(CultureInfo.InvariantCulture) ?
String.Format("{0,20}", "Invariant") :
String.Format("{0,20}", culture.Name);
Console.WriteLine(header);
Console.WriteLine();
foreach (string value in values)
{
Console.Write("{0,-17}", value);
foreach (CultureInfo culture in cultures)
{
try {
TimeSpan ts = TimeSpan.Parse(value, culture);
Console.Write("{0,20}", ts.ToString("c"));
}
catch (FormatException) {
Console.Write("{0,20}", "Bad Format");
}
catch (OverflowException) {
Console.Write("{0,20}", "Overflow");
}
}
Console.WriteLine();
}
}
}
// The example displays the following output:
// String en-US ru-RU Invariant
//
// 6 6.00:00:00 6.00:00:00 6.00:00:00
// 6:12 06:12:00 06:12:00 06:12:00
// 6:12:14 06:12:14 06:12:14 06:12:14
// 6:12:14:45 6.12:14:45 6.12:14:45 6.12:14:45
// 6.12:14:45 6.12:14:45 6.12:14:45 6.12:14:45
// 6:12:14:45.3448 6.12:14:45.3448000 Bad Format 6.12:14:45.3448000
// 6:12:14:45,3448 Bad Format 6.12:14:45.3448000 Bad Format
// 6:34:14:45 Overflow Overflow Overflow
open System
open System.Globalization
open System.Text.RegularExpressions
let values =
[| "6"; "6:12"; "6:12:14"; "6:12:14:45"
"6.12:14:45"; "6:12:14:45.3448"
"6:12:14:45,3448"; "6:34:14:45" |]
let cultures =
[| CultureInfo "en-US"
CultureInfo "ru-RU"
CultureInfo.InvariantCulture |]
let mutable header = $"""{"String",-17}"""
for culture in cultures do
header <- header +
if culture.Equals CultureInfo.InvariantCulture then
$"""{"Invariant",20}"""
else
$"{culture.Name,20}"
printfn $"{header}\m"
for value in values do
printf $"{value,-17}"
for culture in cultures do
try
let ts = TimeSpan.Parse(value, culture)
printf $"{ts,20:c}"
with
| :? FormatException ->
printf $"""{"Bad Format",20}"""
| :? OverflowException ->
printf $"""{"Overflow",20}"""
printfn ""
// The example displays the following output:
// String en-US ru-RU Invariant
//
// 6 6.00:00:00 6.00:00:00 6.00:00:00
// 6:12 06:12:00 06:12:00 06:12:00
// 6:12:14 06:12:14 06:12:14 06:12:14
// 6:12:14:45 6.12:14:45 6.12:14:45 6.12:14:45
// 6.12:14:45 6.12:14:45 6.12:14:45 6.12:14:45
// 6:12:14:45.3448 6.12:14:45.3448000 Bad Format 6.12:14:45.3448000
// 6:12:14:45,3448 Bad Format 6.12:14:45.3448000 Bad Format
// 6:34:14:45 Overflow Overflow Overflow
Imports System.Globalization
Imports System.Threading
Module Example
Public Sub Main()
Dim values() As String = { "6", "6:12", "6:12:14", "6:12:14:45",
"6.12:14:45", "6:12:14:45.3448",
"6:12:14:45,3448", "6:34:14:45" }
Dim cultures() As CultureInfo = { New CultureInfo("en-US"),
New CultureInfo("ru-RU"),
CultureInfo.InvariantCulture }
Dim header As String = String.Format("{0,-17}", "String")
For Each culture As CultureInfo In cultures
header += If(culture.Equals(CultureInfo.InvariantCulture),
String.Format("{0,20}", "Invariant"),
String.Format("{0,20}", culture.Name))
Next
Console.WriteLine(header)
Console.WriteLine()
For Each value As String In values
Console.Write("{0,-17}", value)
For Each culture As CultureInfo In cultures
Try
Dim ts As TimeSpan = TimeSpan.Parse(value, culture)
Console.Write("{0,20}", ts.ToString("c"))
Catch e As FormatException
Console.Write("{0,20}", "Bad Format")
Catch e As OverflowException
Console.Write("{0,20}", "Overflow")
End Try
Next
Console.WriteLine()
Next
End Sub
End Module
' The example displays the following output:
' String en-US ru-RU Invariant
'
' 6 6.00:00:00 6.00:00:00 6.00:00:00
' 6:12 06:12:00 06:12:00 06:12:00
' 6:12:14 06:12:14 06:12:14 06:12:14
' 6:12:14:45 6.12:14:45 6.12:14:45 6.12:14:45
' 6.12:14:45 6.12:14:45 6.12:14:45 6.12:14:45
' 6:12:14:45.3448 6.12:14:45.3448000 Bad Format 6.12:14:45.3448000
' 6:12:14:45,3448 Bad Format 6.12:14:45.3448000 Bad Format
' 6:34:14:45 Overflow Overflow Overflow
注解
此方法尝试 input
对 指定的 formatProvider
区域性使用每个区域性特定的格式进行分析。
formatProvider
参数是一种IFormatProvider实现,提供有关返回的字符串格式的区域性特定信息。 参数 formatProvider
可以是以下任一参数:
- 一个 CultureInfo 对象,表示其格式约定将反映在返回的字符串中的区域性。 DateTimeFormatInfo属性返回CultureInfo.DateTimeFormat的对象定义返回的字符串的格式。
- 一个 DateTimeFormatInfo 对象,该对象定义返回的字符串的格式。
- 实现 接口的 IFormatProvider 自定义对象。 其 IFormatProvider.GetFormat 方法返回一个 DateTimeFormatInfo 对象,该对象提供格式设置信息。
如果 formatProvider
为 null
,则 DateTimeFormatInfo 使用与当前区域性关联的 对象。
有关此 API 的详细信息,请参阅 System.TimeSpan.Parse 的补充 API 说明。
适用于
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈