TimeSpan.Parse Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Konverterar strängrepresentationen av ett tidsintervall till motsvarande TimeSpan .
Överlagringar
| Name | Description |
|---|---|
| Parse(ReadOnlySpan<Char>, IFormatProvider) |
Konverterar spanrepresentationen av ett tidsintervall till dess TimeSpan motsvarighet med hjälp av den angivna kulturspecifika formatinformationen. |
| Parse(String, IFormatProvider) |
Konverterar strängrepresentationen av ett tidsintervall till dess TimeSpan motsvarighet med hjälp av den angivna kulturspecifika formatinformationen. |
| Parse(String) |
Konverterar strängrepresentationen av ett tidsintervall till motsvarande TimeSpan . |
Parse(ReadOnlySpan<Char>, IFormatProvider)
- Källa:
- TimeSpan.cs
- Källa:
- TimeSpan.cs
- Källa:
- TimeSpan.cs
- Källa:
- TimeSpan.cs
- Källa:
- TimeSpan.cs
Konverterar spanrepresentationen av ett tidsintervall till dess TimeSpan motsvarighet med hjälp av den angivna kulturspecifika formatinformationen.
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
Parametrar
- input
- ReadOnlySpan<Char>
Ett intervall som innehåller de tecken som representerar tidsintervallet som ska konverteras.
- formatProvider
- IFormatProvider
Ett objekt som tillhandahåller kulturspecifik formateringsinformation.
Returer
Ett tidsintervall inputsom motsvarar , enligt vad som anges av formatProvider.
Implementeringar
Gäller för
Parse(String, IFormatProvider)
- Källa:
- TimeSpan.cs
- Källa:
- TimeSpan.cs
- Källa:
- TimeSpan.cs
- Källa:
- TimeSpan.cs
- Källa:
- TimeSpan.cs
Konverterar strängrepresentationen av ett tidsintervall till dess TimeSpan motsvarighet med hjälp av den angivna kulturspecifika formatinformationen.
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
Parametrar
- input
- String
En sträng som anger tidsintervallet som ska konverteras.
- formatProvider
- IFormatProvider
Ett objekt som tillhandahåller kulturspecifik formateringsinformation.
Returer
Ett tidsintervall inputsom motsvarar , enligt vad som anges av formatProvider.
Implementeringar
Undantag
input är null.
input har ett ogiltigt format.
input representerar ett tal som är mindre än TimeSpan.MinValue eller större än TimeSpan.MaxValue.
-eller-
Minst en av komponenterna dagar, timmar, minuter eller sekunder i input ligger utanför dess giltiga intervall.
Exempel
I följande exempel definieras en matris med CultureInfo objekt och varje objekt används i anrop till Parse(String, IFormatProvider) metoden för att parsa elementen i en strängmatris. Exemplet illustrerar hur konventionerna för en specifik kultur påverkar formateringsåtgärden.
using System;
using System.Globalization;
using System.Text.RegularExpressions;
public class Example2
{
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
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
' 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
Kommentarer
Den här metoden försöker parsa input med var och en av de kulturspecifika formaten för den kultur som anges av formatProvider.
Parametern formatProvider är en IFormatProvider implementering som ger kulturspecifik information om formatet på den returnerade strängen. Parametern formatProvider kan vara något av följande:
- Ett CultureInfo objekt som representerar den kultur vars formateringskonventioner ska återspeglas i den returnerade strängen. Objektet DateTimeFormatInfo som returneras av CultureInfo.DateTimeFormat egenskapen definierar formateringen för den returnerade strängen.
- Ett DateTimeFormatInfo objekt som definierar formateringen för den returnerade strängen.
- Ett anpassat objekt som implementerar IFormatProvider gränssnittet. Dess IFormatProvider.GetFormat metod returnerar ett DateTimeFormatInfo objekt som innehåller formateringsinformation.
Om formatProvider är nullanvänds det DateTimeFormatInfo objekt som är associerat med den aktuella kulturen.
Indatasträngen Parse till metoderna innehåller en tidsintervallspecifikation i formuläret:
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
Element inom hakparenteser ([ och ]) är valfria. Ett alternativ från listan, omslutna i klammerparenteser ({ och }) och separerade med lodräta streck (|), måste väljas. I följande tabell beskrivs varje element.
| Element | Description |
|---|---|
| Ws | Valfritt blanksteg. |
| - | Ett valfritt minustecken som anger ett negativt TimeSpan. |
| d | Dagar, från 0 till 10675199. |
| . | En kulturkänslig symbol som skiljer dagar från timmar. Det invarianta formatet använder ett punkttecken ("."). |
| Hh | Timmar, från 0 till 23. |
| : | Symbolen för kulturanpassad tidsavskiljare. Det invarianta formatet använder ett kolontecken (":"). |
| mm | Minuter, från 0 till 59. |
| ss | Valfria sekunder, mellan 0 och 59. |
| . | En kulturkänslig symbol som skiljer sekunder från bråkdelar av en sekund. Det invarianta formatet använder ett punkttecken ("."). |
| ff | Valfria bråksekunder som består av en till sju decimaler. |
Om indatasträngen inte bara är ett dagvärde måste den innehålla en komponent för timmar och minuter. andra komponenter är valfria. Om de finns måste värdena för varje tidskomponent ligga inom ett angivet intervall. Till exempel måste värdet för hh, timkomponenten, vara mellan 0 och 23. När man skickar "23:00:00" till metoden Parse returneras ett tidsintervall på 23 timmar. Å andra sidan returnerar "24:00:00" ett tidsintervall på 24 dagar. Eftersom "24" ligger utanför intervallet för timkomponenten tolkas det som dagskomponenten.
Komponenterna i indatasträngen måste tillsammans ange ett tidsintervall som är större än eller lika TimeSpan.MinValue med och mindre än eller lika med TimeSpan.MaxValue.
Metoden Parse(String) försöker parsa indatasträngen med var och en av de kulturspecifika formaten för den aktuella kulturen.
Gäller för
Parse(String)
- Källa:
- TimeSpan.cs
- Källa:
- TimeSpan.cs
- Källa:
- TimeSpan.cs
- Källa:
- TimeSpan.cs
- Källa:
- TimeSpan.cs
Konverterar strängrepresentationen av ett tidsintervall till motsvarande 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
Parametrar
- s
- String
En sträng som anger tidsintervallet som ska konverteras.
Returer
Ett tidsintervall ssom motsvarar .
Undantag
s är null.
s har ett ogiltigt format.
s representerar ett tal som är mindre än TimeSpan.MinValue eller större än TimeSpan.MaxValue.
-eller-
Minst en av komponenterna dagar, timmar, minuter eller sekunder ligger utanför dess giltiga intervall.
Exempel
I följande exempel används Parse metoden för att konvertera varje element i en strängmatris till ett TimeSpan värde. Den ändrar den nuvarande systemkulturen till kroatiska - Kroatien ("hr-HR") och engelska - United States ("en-US") för att illustrera hur den nuvarande systemkulturen påverkar parsningsåtgärden.
using System;
using System.Globalization;
using System.Threading;
public class Example1
{
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
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
' 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
Kommentarer
Indatasträngen Parse till metoderna innehåller en tidsintervallspecifikation i formuläret:
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
Element inom hakparenteser ([ och ]) är valfria. Ett alternativ från listan, omslutna i klammerparenteser ({ och }) och separerade med lodräta streck (|), måste väljas. I följande tabell beskrivs varje element.
| Element | Description |
|---|---|
| Ws | Valfritt blanksteg. |
| - | Ett valfritt minustecken som anger ett negativt TimeSpan. |
| d | Dagar, från 0 till 10675199. |
| . | En kulturkänslig symbol som skiljer dagar från timmar. Det invarianta formatet använder ett punkttecken ("."). |
| Hh | Timmar, från 0 till 23. |
| : | Symbolen för kulturanpassad tidsavskiljare. Det invarianta formatet använder ett kolontecken (":"). |
| mm | Minuter, från 0 till 59. |
| ss | Valfria sekunder, mellan 0 och 59. |
| . | En kulturkänslig symbol som skiljer sekunder från bråkdelar av en sekund. Det invarianta formatet använder ett punkttecken ("."). |
| ff | Valfria bråksekunder som består av en till sju decimaler. |
Om indatasträngen inte bara är ett dagvärde måste den innehålla en komponent för timmar och minuter. andra komponenter är valfria. Om de finns måste värdena för varje tidskomponent ligga inom ett angivet intervall. Till exempel måste värdet för hh, timkomponenten, vara mellan 0 och 23. När man skickar "23:00:00" till metoden Parse returneras ett tidsintervall på 23 timmar. Å andra sidan returnerar "24:00:00" ett tidsintervall på 24 dagar. Eftersom "24" ligger utanför intervallet för timkomponenten tolkas det som dagskomponenten.
Komponenterna i indatasträngen måste tillsammans ange ett tidsintervall som är större än eller lika TimeSpan.MinValue med och mindre än eller lika med TimeSpan.MaxValue.
Metoden Parse(String) försöker parsa indatasträngen med var och en av de kulturspecifika formaten för den aktuella kulturen.