TimeSpan.Parse Metod

Definition

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:

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.

Gäller för