Aracılığıyla paylaş


System.TimeSpan.Parse yöntemi

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

Yöntemlerin Parse giriş dizesi, formda bir zaman aralığı belirtimi içerir:

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

Köşeli ayraç ([ ve ]) içindeki öğeler isteğe bağlıdır. Küme ayraçları ({ ve ) içine alınmış ve }dikey çubuklarla (|) ayrılmış alternatifler listesinden bir seçim yapılması gerekir. Aşağıdaki tablo her öğeyi açıklar.

Öğe Açıklama
Ws İsteğe bağlı beyaz boşluk.
- Negatif olduğunu gösteren isteğe bağlı eksi TimeSpanişareti.
d 0 ile 10675199 arasında değişen gün.
. Günleri saatlerden ayıran kültüre duyarlı bir simge. Sabit biçim bir nokta (".") karakteri kullanır.
hh 0-23 arasında saat.
: Kültüre duyarlı saat ayırıcı simgesi. Sabit biçim iki nokta üst üste (":") karakteri kullanır.
mm 0 ile 59 arasında dakika.
ss 0 İle 59 arasında değişen isteğe bağlı saniye.
. Saniyeleri saniye parçalarından ayıran bir kültüre duyarlı simge. Sabit biçim bir nokta (".") karakteri kullanır.
ff Bir ila yedi ondalık basamaktan oluşan isteğe bağlı saniye parçası.

Giriş dizesi yalnızca bir gün değeri değilse, saat ve dakika bileşeni içermelidir; diğer bileşenler isteğe bağlıdır. Bunlar varsa, her zaman bileşeninin değerleri belirtilen aralık içinde olmalıdır. Örneğin, saat bileşeni olan ss değerinin 0 ile 23 arasında olması gerekir. Bu nedenle, yönteme "23:00:00" geçirilmesi Parse 23 saatlik bir zaman aralığı döndürür. Öte yandan, "24:00:00" değerinin geçirilmesi 24 günlük bir zaman aralığı döndürür. "24" saat bileşeni aralığının dışında olduğundan, gün bileşeni olarak yorumlanır.

Giriş dizesinin bileşenleri toplu olarak değerinden büyük veya buna eşit TimeSpan.MinValue ve değerinden küçük veya eşit TimeSpan.MaxValuebir zaman aralığı belirtmelidir.

yöntemi, Parse(String) geçerli kültür için kültüre özgü biçimlerin her birini kullanarak giriş dizesini ayrıştırmaya çalışır.

Arayanlara notlar

Ayrıştırılacak dizedeki bir zaman aralığı bileşeni yediden fazla basamak içerdiğinde, .NET Framework 3.5 ve önceki sürümlerdeki ayrıştırma işlemleri .NET Framework 4 ve sonraki sürümlerdeki ayrıştırma işlemlerinden farklı davranabilir. Bazı durumlarda, .NET Framework 3.5 ve önceki sürümlerinde başarılı olan ayrıştırma işlemleri başarısız olabilir ve .NET Framework 4 ve sonraki sürümlerde bir OverflowException oluşturabilir. Diğer durumlarda, .NET Framework 3.5 ve önceki sürümlerinde bir FormatException oluşturan ayrıştırma işlemleri başarısız olabilir ve .NET Framework 4 ve sonraki sürümlerinde bir OverflowException oluşturur. Aşağıdaki örnekte her iki senaryo da gösterilmektedir.

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

let values = [| "000000006"; "12.12:12:12.12345678" |]
for value in values do
    try
        let interval = TimeSpan.Parse value
        printfn $"{value} --> {interval}"   
    with
    | :? FormatException ->
        printfn $"{value}: Bad Format"
    | :? OverflowException ->
        printfn $"{value}: Overflow"

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