TimeSpan.Parse Méthode

Définition

Convertit la représentation sous forme de chaîne d'un intervalle de temps en TimeSpan équivalent.

Surcharges

Parse(String)

Convertit la représentation sous forme de chaîne d'un intervalle de temps en TimeSpan équivalent.

Parse(ReadOnlySpan<Char>, IFormatProvider)

Convertit la représentation sous forme d’étendue d'un intervalle de temps dans son équivalent TimeSpan à l'aide des informations de format spécifiques à la culture spécifiées.

Parse(String, IFormatProvider)

Convertit la représentation sous forme de chaîne d'un intervalle de temps dans son équivalent TimeSpan à l'aide des informations de format spécifiques à la culture spécifiées.

Parse(String)

Convertit la représentation sous forme de chaîne d'un intervalle de temps en TimeSpan équivalent.

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

Paramètres

s
String

Chaîne qui spécifie l'intervalle de temps à convertir.

Retours

TimeSpan

Intervalle de temps qui correspond à s.

Exceptions

s a la valeur null.

s a un format non valide.

s représente un nombre qui est inférieur à MinValue ou supérieur à MaxValue.

  • ou - Au moins un des composants des jours, heures, minutes ou secondes est en dehors de sa plage valide.

Exemples

L’exemple suivant utilise la Parse méthode pour convertir chaque élément d’un tableau de chaînes en une TimeSpan valeur. Il remplace la culture actuelle du système par Croate-Croatie (« HR-HR ») et anglais-États-Unis (« en-US ») pour illustrer la façon dont la culture système actuelle affecte l’opération d’analyse.

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

Remarques

Le s paramètre contient une spécification d’intervalle de temps au format suivant :

[WS] [-] { d | [d.] hh:mm[ :SS[.FF]]} [WS]

Les éléments entre crochets ([ et ]) sont facultatifs. Une sélection de la liste d’alternatives entre accolades ({et}) et séparées par des barres verticales (|) est requise. Le tableau suivant décrit chaque élément.

Élément Description
ws Espace blanc facultatif.
- Signe moins facultatif, qui indique un négatif TimeSpan .
d Jours, entre 0 et 10675199.
. Symbole dépendante de la culture qui sépare les jours des heures. Le format invariant utilise un point (".").
hh Heures, entre 0 et 23.
: Symbole de séparateur d’heure dépendante de la culture. Le format invariant utilise un caractère deux-points («  : »).
mm Minutes, entre 0 et 59.
ss Secondes facultatives, entre 0 et 59.
. Symbole dépendante de la culture qui sépare les secondes des fractions de seconde. Le format invariant utilise un point (".").
FF Fractions de seconde facultatives, composées de un à sept chiffres décimaux.

Si l' s argument n’est pas une valeur de jour uniquement, il doit inclure un composant « heures » et « minutes »; les autres composants sont facultatifs. S’ils sont présents, les valeurs de chaque composant de temps doivent être comprises dans une plage spécifiée. Par exemple, la valeur de hh, le composant hours, doit être comprise entre 0 et 23. Pour cette raison, passer « 23:00:00 » à la Parse méthode retourne un intervalle de temps de 23 heures. En revanche, le passage de « 24:00:00 » retourne un intervalle de temps de 24 jours. Étant donné que « 24 » est en dehors de la plage du composant hours, il est interprété comme le composant Days.

Les composants de s doivent collectivement spécifier un intervalle de temps supérieur ou égal à TimeSpan.MinValue et inférieur ou égal à TimeSpan.MaxValue .

La Parse(String) méthode tente d’analyser à s l’aide de chacun des formats spécifiques à la culture pour la culture actuelle.

Remarques aux appelants

lorsqu’un composant d’intervalle de temps dans la chaîne à analyser contient plus de sept chiffres, les opérations d’analyse dans le .NET Framework 3,5 et les versions antérieures peuvent se comporter différemment des opérations d’analyse dans le .NET Framework 4 et versions ultérieures. dans certains cas, l’analyse des opérations qui réussissent dans le .NET Framework 3,5 et les versions antérieures peut échouer et lever une OverflowException dans le .NET Framework 4 et versions ultérieures. dans d’autres cas, les opérations d’analyse qui lèvent une FormatException dans le .NET Framework 3,5 et les versions antérieures peuvent échouer et lever une OverflowException dans le .NET Framework 4 et versions ultérieures. L’exemple suivant illustre les deux scénarios.

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

S’applique à

Parse(ReadOnlySpan<Char>, IFormatProvider)

Convertit la représentation sous forme d’étendue d'un intervalle de temps dans son équivalent TimeSpan à l'aide des informations de format spécifiques à la culture spécifiées.

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

Paramètres

input
ReadOnlySpan<Char>

Étendue contenant les caractères représentant l’intervalle de temps à convertir.

formatProvider
IFormatProvider

Objet qui fournit des informations de mise en forme propres à la culture.

Retours

TimeSpan

Intervalle de temps qui correspond à input, tel que spécifié par formatProvider.

S’applique à

Parse(String, IFormatProvider)

Convertit la représentation sous forme de chaîne d'un intervalle de temps dans son équivalent TimeSpan à l'aide des informations de format spécifiques à la culture spécifiées.

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

Paramètres

input
String

Chaîne qui spécifie l'intervalle de temps à convertir.

formatProvider
IFormatProvider

Objet qui fournit des informations de mise en forme propres à la culture.

Retours

TimeSpan

Intervalle de temps qui correspond à input, tel que spécifié par formatProvider.

Exceptions

input a la valeur null.

input a un format non valide.

input représente un nombre qui est inférieur à MinValue ou supérieur à MaxValue.

  • ou - Au moins un des composants des jours, heures, minutes ou secondes dans input est en dehors de sa plage valide.

Exemples

L’exemple suivant définit un tableau d' CultureInfo objets et utilise chaque objet dans les appels à la Parse(String, IFormatProvider) méthode pour analyser les éléments d’un tableau de chaînes. L’exemple illustre comment les conventions d’une culture spécifique influencent l’opération de mise en forme.

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

Remarques

Le input paramètre contient une spécification d’intervalle de temps au format suivant :

[WS] [-] { d | [d.] hh:mm[ :SS[.FF]]} [WS]

Les éléments entre crochets ([et]) sont facultatifs. une sélection de la liste d’alternatives entre accolades ({et}) et séparées par des barres verticales (|) est requise. Le tableau suivant décrit chaque élément.

Élément Description
ws Espace blanc facultatif.
- Signe moins facultatif, qui indique un négatif TimeSpan .
d Jours, entre 0 et 10675199.
. Symbole dépendante de la culture qui sépare les jours des heures. La valeur par défaut est un point (".").
hh Heures, entre 0 et 23.
: Symbole de séparateur d’heure dépendante de la culture.
mm Minutes, entre 0 et 59.
ss Secondes facultatives, entre 0 et 59.
. Symbole dépendante de la culture qui sépare les secondes des fractions de seconde. La valeur par défaut est un point (".").
FF Fractions de seconde facultatives, composées de un à sept chiffres décimaux.

Si l' input argument n’est pas une valeur de jour uniquement, il doit inclure un composant « heures » et « minutes »; les autres composants sont facultatifs. S’ils sont présents, les valeurs de chaque composant de temps doivent être comprises dans une plage spécifiée. Par exemple, la valeur de hh, le composant hours, doit être comprise entre 0 et 23. Pour cette raison, passer « 23:00:00 » à la Parse méthode retourne un intervalle de temps de 23 heures. En revanche, le passage de « 24:00:00 » retourne un intervalle de temps de 24 jours. Étant donné que « 24 » est en dehors de la plage du composant hours, il est interprété comme le composant Days.

Les composants de input doivent collectivement spécifier un intervalle de temps supérieur ou égal à TimeSpan.MinValue et inférieur ou égal à TimeSpan.MaxValue .

La Parse(String) méthode tente d’analyser à input l’aide de chacun des formats spécifiques à la culture pour la culture spécifiée par formatProvider .

Le formatProvider paramètre est une IFormatProvider implémentation qui fournit des informations spécifiques à la culture sur le format de la chaîne retournée. Le formatProvider paramètre peut être l’un des éléments suivants :

Si formatProvider est null , l' DateTimeFormatInfo objet associé à la culture actuelle est utilisé.

Remarques aux appelants

lorsqu’un composant d’intervalle de temps dans la chaîne à analyser contient plus de sept chiffres, les opérations d’analyse dans le .NET Framework 3,5 et les versions antérieures peuvent se comporter différemment des opérations d’analyse dans le .NET Framework 4 et versions ultérieures. dans certains cas, l’analyse des opérations qui réussissent dans le .NET Framework 3,5 et les versions antérieures peut échouer et lever une OverflowException dans le .NET Framework 4 et versions ultérieures. dans d’autres cas, les opérations d’analyse qui lèvent une FormatException dans le .NET Framework 3,5 et les versions antérieures peuvent échouer et lever une OverflowException dans le .NET Framework 4 et versions ultérieures. L’exemple suivant illustre les deux scénarios.

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

S’applique à