TimeSpan.Parse Metodo

Definizione

Converte la rappresentazione di stringa di un intervallo di tempo nell'equivalente TimeSpan.

Overload

Parse(String)

Converte la rappresentazione di stringa di un intervallo di tempo nell'equivalente TimeSpan.

Parse(ReadOnlySpan<Char>, IFormatProvider)

Converte una rappresentazione intervallo di un intervallo di tempo nell'equivalente TimeSpan usando le informazioni sul formato specifiche delle impostazioni cultura indicate.

Parse(String, IFormatProvider)

Converte una rappresentazione di stringa di un intervallo di tempo nell'equivalente TimeSpan usando le informazioni sul formato specifiche delle impostazioni cultura indicate.

Parse(String)

Converte la rappresentazione di stringa di un intervallo di tempo nell'equivalente 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

Parametri

s
String

Stringa che specifica l'intervallo di tempo da convertire.

Restituisce

TimeSpan

Intervallo di tempo che corrisponde a s.

Eccezioni

Il formato di s non è valido.

L'oggetto s rappresenta un numero minore di MinValue o maggiore di MaxValue.

-oppure- Il valore di almeno uno o più componenti relativi a giorni, ore, minuti o secondi non è compreso nell'intervallo valido.

Esempio

Nell'esempio seguente viene utilizzato Parse il metodo per convertire ogni elemento di una matrice di stringhe in un valore TimeSpan . Le impostazioni cultura correnti del sistema vengono cambiate in serbo - Serbo ("hr-HR") e inglese - Stati Uniti ("en-US") per illustrare in che modo le impostazioni cultura correnti del sistema influiscono sull'operazione di analisi.

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
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

Commenti

Il s parametro contiene una specifica dell'intervallo di tempo nel formato seguente:

[ws] [-] { d | [d.] hh:mm[:ss[.ff]] }[ws]

Gli elementi tra parentesi quadre ([e]) sono facoltativi. È necessaria una selezione dall'elenco di alternative racchiuse tra parentesi graffe ({ e }) e separate da barre verticali (|). La tabella seguente descrive i singoli elementi.

Elemento Descrizione
ws Spazio vuoto facoltativo.
- Segno meno facoltativo, che indica un valore TimeSpan negativo.
d Giorni, compresi tra 0 e 10675199.
. Simbolo con distinzione delle impostazioni cultura che separa i giorni dalle ore. Il formato invariante usa un carattere punto (".").
hh Ore, comprese tra 0 e 23.
: Simbolo del separatore dell'ora con distinzione delle impostazioni cultura. Il formato invariante usa i due punti (":").
mm Minuti, compresi tra 0 e 59.
ss Secondi facoltativi, compresi tra 0 e 59.
. Simbolo con distinzione delle impostazioni cultura che separa i secondi dalle frazioni di secondo. Il formato invariante usa un carattere punto (".").
Ff Secondi frazionari facoltativi, costituiti da una o sette cifre decimali.

Se l'argomento non è solo un valore di giorno, deve includere un componente ore e minuti. Gli s altri componenti sono facoltativi. Se sono presenti, i valori di ogni componente ora devono rientrare in un intervallo specificato. Ad esempio, il valore di hh, il componente ore, deve essere compreso tra 0 e 23. Per questo problema, il passaggio di "23:00:00" al metodo restituisce un intervallo di Parse tempo di 23 ore. D'altra parte, il passaggio di "24:00:00" restituisce un intervallo di tempo di 24 giorni. Poiché "24" non è compreso nell'intervallo del componente ore, viene interpretato come componente giorni.

I componenti di devono specificare collettivamente un intervallo di tempo maggiore s o uguale a e minore o uguale a TimeSpan.MinValue TimeSpan.MaxValue .

Il Parse(String) metodo tenta di eseguire s l'analisi usando ognuno dei formati specifici delle impostazioni cultura per le impostazioni cultura correnti.

Note per i chiamanti

Quando un componente dell'intervallo di tempo nella stringa da analizzare contiene più di sette cifre, le operazioni di analisi in .NET Framework 3.5 e versioni precedenti possono comportarsi in modo diverso rispetto alle operazioni di analisi in .NET Framework 4 e versioni successive. In alcuni casi, le operazioni di analisi che hanno esito positivo in .NET Framework 3.5 e versioni precedenti potrebbero non riuscire e generare un'eccezione nel .NET Framework 4 e versioni OverflowException successive. In altri casi, le operazioni di analisi che generano un'eccezione in .NET Framework 3.5 e versioni precedenti potrebbero non riuscire e generare un'eccezione nel .NET Framework 4 e versioni FormatException OverflowException successive. L'esempio seguente illustra entrambi gli scenari.

string[] values = { "000000006", "12.12:12:12.12345678" };
foreach (string value in values)
{
   try {
      TimeSpan interval = TimeSpan.Parse(value);
      Console.WriteLine("{0} --> {1}", value, interval);
   }   
   catch (FormatException) {
      Console.WriteLine("{0}: Bad Format", value);
   }   
   catch (OverflowException) {
      Console.WriteLine("{0}: Overflow", value);
   }
}

// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
//       12.12:12:12.12345678: Bad Format      
// Output from .NET Framework 4 and later versions or .NET Core:
//       000000006: Overflow
//       12.12:12:12.12345678: Overflow
Dim values() As String = { "000000006", "12.12:12:12.12345678" }
For Each value As String In values
   Try
      Dim interval As TimeSpan = TimeSpan.Parse(value)
      Console.WriteLine("{0} --> {1}", value, interval)
   Catch e As FormatException
      Console.WriteLine("{0}: Bad Format", value)
   Catch e As OverflowException
      Console.WriteLine("{0}: Overflow", value)
   End Try         
Next
' Output from .NET Framework 3.5 and earlier versions:
'       000000006 --> 6.00:00:00
'       12.12:12:12.12345678: Bad Format      
' Output from .NET Framework 4:
'       000000006: Overflow
'       12.12:12:12.12345678: Overflow

Si applica a

Parse(ReadOnlySpan<Char>, IFormatProvider)

Converte una rappresentazione intervallo di un intervallo di tempo nell'equivalente TimeSpan usando le informazioni sul formato specifiche delle impostazioni cultura indicate.

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

Parametri

input
ReadOnlySpan<Char>

Intervallo contenente i caratteri che rappresentano l'intervallo di tempo da convertire.

formatProvider
IFormatProvider

Oggetto che fornisce informazioni di formattazione specifiche delle impostazioni cultura.

Restituisce

TimeSpan

Intervallo di tempo che corrisponde a input, come specificato da formatProvider.

Si applica a

Parse(String, IFormatProvider)

Converte una rappresentazione di stringa di un intervallo di tempo nell'equivalente TimeSpan usando le informazioni sul formato specifiche delle impostazioni cultura indicate.

public:
 static TimeSpan Parse(System::String ^ input, IFormatProvider ^ formatProvider);
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

Parametri

input
String

Stringa che specifica l'intervallo di tempo da convertire.

formatProvider
IFormatProvider

Oggetto che fornisce informazioni di formattazione specifiche delle impostazioni cultura.

Restituisce

TimeSpan

Intervallo di tempo che corrisponde a input, come specificato da formatProvider.

Eccezioni

input è null.

Il formato di input non è valido.

L'oggetto input rappresenta un numero minore di MinValue o maggiore di MaxValue.

-oppure- Almeno uno dei componenti giorni, ore, minuti o secondi in input non rientra nell'intervallo valido.

Esempio

Nell'esempio seguente viene definita una matrice di oggetti e viene utilizzato ogni oggetto nelle chiamate al metodo per analizzare CultureInfo gli elementi in una matrice di Parse(String, IFormatProvider) stringhe. L'esempio illustra come le convenzioni di impostazioni cultura specifiche influiscono sull'operazione di formattazione.

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
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

Commenti

Il input parametro contiene una specifica dell'intervallo di tempo nel formato seguente:

[ws] [-] { d | [d.] hh:mm[:ss[.ff]] }[ws]

Gli elementi tra parentesi quadre ([ e ]) sono facoltativi. È necessaria una selezione dall'elenco di alternative racchiuse tra parentesi graffe ({ e }) e separate da barre verticali (|). La tabella seguente descrive i singoli elementi.

Elemento Descrizione
ws Spazio vuoto facoltativo.
- Segno meno facoltativo, che indica un valore TimeSpan negativo.
d Giorni, compresi tra 0 e 10675199.
. Simbolo con distinzione delle impostazioni cultura che separa i giorni dalle ore. Il valore predefinito è un punto (".").
hh Ore, comprese tra 0 e 23.
: Simbolo del separatore dell'ora con distinzione delle impostazioni cultura.
mm Minuti, compresi tra 0 e 59.
ss Secondi facoltativi, compresi tra 0 e 59.
. Simbolo con distinzione delle impostazioni cultura che separa i secondi dalle frazioni di secondo. Il valore predefinito è un punto (".").
Ff Secondi frazionari facoltativi, costituiti da una o sette cifre decimali.

Se l'argomento non è solo un valore di giorno, deve includere un componente ore e minuti. Gli input altri componenti sono facoltativi. Se sono presenti, i valori di ogni componente ora devono rientrare in un intervallo specificato. Ad esempio, il valore di hh, il componente ore, deve essere compreso tra 0 e 23. Per questo problema, il passaggio di "23:00:00" al metodo restituisce un intervallo di Parse tempo di 23 ore. D'altra parte, il passaggio di "24:00:00" restituisce un intervallo di tempo di 24 giorni. Poiché "24" non è compreso nell'intervallo del componente ore, viene interpretato come componente giorni.

I componenti di devono specificare collettivamente un intervallo di tempo maggiore input o uguale a e minore o uguale a TimeSpan.MinValue TimeSpan.MaxValue .

Il Parse(String) metodo tenta di eseguire input l'analisi usando ognuno dei formati specifici delle impostazioni cultura per le impostazioni cultura specificate da formatProvider .

Il formatProvider parametro è IFormatProvider un'implementazione che fornisce informazioni specifiche delle impostazioni cultura sul formato della stringa restituita. Il formatProvider parametro può essere uno dei seguenti:

Se formatProvider è , viene utilizzato null DateTimeFormatInfo l'oggetto associato alle impostazioni cultura correnti.

Note per i chiamanti

Quando un componente dell'intervallo di tempo nella stringa da analizzare contiene più di sette cifre, le operazioni di analisi in .NET Framework 3.5 e versioni precedenti possono comportarsi in modo diverso rispetto alle operazioni di analisi in .NET Framework 4 e versioni successive. In alcuni casi, le operazioni di analisi che hanno esito positivo in .NET Framework 3.5 e versioni precedenti potrebbero non riuscire e generare un'eccezione nel .NET Framework 4 e versioni OverflowException successive. In altri casi, le operazioni di analisi che generano un'eccezione in .NET Framework 3.5 e versioni precedenti potrebbero non riuscire e generare un'eccezione nel .NET Framework 4 e versioni FormatException OverflowException successive. L'esempio seguente illustra entrambi gli scenari.

string[] values = { "000000006", "12.12:12:12.12345678" };
foreach (string value in values)
{
   try {
      TimeSpan interval = TimeSpan.Parse(value);
      Console.WriteLine("{0} --> {1}", value, interval);
   }   
   catch (FormatException) {
      Console.WriteLine("{0}: Bad Format", value);
   }   
   catch (OverflowException) {
      Console.WriteLine("{0}: Overflow", value);
   }
}

// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
//       12.12:12:12.12345678: Bad Format      
// Output from .NET Framework 4 and later versions or .NET Core:
//       000000006: Overflow
//       12.12:12:12.12345678: Overflow
Dim values() As String = { "000000006", "12.12:12:12.12345678" }
For Each value As String In values
   Try
      Dim interval As TimeSpan = TimeSpan.Parse(value)
      Console.WriteLine("{0} --> {1}", value, interval)
   Catch e As FormatException
      Console.WriteLine("{0}: Bad Format", value)
   Catch e As OverflowException
      Console.WriteLine("{0}: Overflow", value)
   End Try         
Next
' Output from .NET Framework 3.5 and earlier versions:
'       000000006 --> 6.00:00:00
'       12.12:12:12.12345678: Bad Format      
' Output from .NET Framework 4:
'       000000006: Overflow
'       12.12:12:12.12345678: Overflow

Si applica a