Share via


Elemen <TimeSpan_LegacyFormatMode>

Menentukan apakah waktu proses mempertahankan perilaku lama dalam operasi pemformatan dengan nilai System.TimeSpan.

<konfigurasi>
  <runtime>
    <TimeSpan_LegacyFormatMode>

Sintaks

<TimeSpan_LegacyFormatMode
   enabled="true|false"/>

Atribut dan Elemen

Bagian berikut menjelaskan atribut, elemen turunan, dan elemen induk.

Atribut

Atribut Deskripsi
enabled Atribut yang diperlukan.

Menentukan apakah runtime menggunakan perilaku pemformatan lama dengan nilai System.TimeSpan.

Atribut yang diaktifkan

Nilai Deskripsi
false Runtime tidak memulihkan perilaku pemformatan lama.
true Runtime memulihkan perilaku pemformatan lama.

Elemen Anak

Tidak ada.

Elemen Induk

Elemen Deskripsi
configuration Elemen akar di setiap file konfigurasi yang digunakan oleh runtime bahasa umum dan aplikasi .NET Framework.
runtime Berisi informasi tentang opsi inisialisasi runtime bahasa umum.

Keterangan

Semenjak .NET Framework 4, struktur System.TimeSpan mengimplementasikan antarmuka IFormattable dan mendukung operasi pemformatan dengan string format standar dan kustom. Jika metode penguraian menemukan penentu format atau string format yang tidak didukung, metode tersebut akan menampilkan FormatException.

Di versi .NET Framework sebelumnya, struktur TimeSpan tidak menerapkan IFormattable dan tidak mendukung string format. Namun, banyak pengembang secara keliru berasumsi bahwa TimeSpan mendukung sekumpulan string format dan menggunakannya dalam operasi pemformatan gabungan dengan metode seperti String.Format. Biasanya, jika suatu jenis mengimplementasikan IFormattable dan mendukung string format, panggilan ke metode pemformatan dengan string format yang tidak didukung biasanya memunculkan FormatException. Namun, karena TimeSpan tidak mengimplementasikan IFormattable, runtime mengabaikan format string dan bukan memanggil metode TimeSpan.ToString(). Ini berarti, meskipun string format tidak berpengaruh pada operasi pemformatan, kehadirannya tidak menghasilkan FormatException.

Untuk kasus ketika kode lama melewati metode pemformatan gabungan dan string format yang tidak valid, dan kode tersebut tidak dapat dikompilasi ulang, Anda dapat menggunakan elemen <TimeSpan_LegacyFormatMode> untuk memulihkan perilaku TimeSpan lama. Ketika Anda mengatur atribut enabled elemen ini menjadi true, metode pemformatan gabungan menghasilkan panggilan ke TimeSpan.ToString() bukan TimeSpan.ToString(String, IFormatProvider), dan FormatException tidak dihasilkan.

Contoh

Contoh berikut membuat instans objek TimeSpan dan mencoba memformatnya dengan metode String.Format(String, Object) menggunakan string format standar yang tidak didukung.

using System;

public class Example
{
   public static void Main()
   {
      TimeSpan interval = new TimeSpan(12, 30, 45);
      string output;
      try {
         output = String.Format("{0:r}", interval);
      }
      catch (FormatException) {
         output = "Invalid Format";
      }
      Console.WriteLine(output);
   }
}
Module Example
    Public Sub Main()
        Dim interval As New TimeSpan(12, 30, 45)
        Dim output As String
        Try
            output = String.Format("{0:r}", interval)
        Catch e As FormatException
            output = "Invalid Format"
        End Try
        Console.WriteLine(output)
    End Sub
End Module

Ketika Anda menjalankan contoh di .NET Framework 3.5 atau versi yang lebih lama, versi tersebut akan menampilkan output berikut:

12:30:45

Cara ini sangat berbeda dari output jika Anda menjalankan contoh pada .NET Framework 4 atau versi yang lebih baru:

Invalid Format

Namun, jika Anda menambahkan file konfigurasi berikut ke direktori contoh dan kemudian menjalankan contoh di .NET Framework 4 atau versi yang lebih baru, output identik dengan yang dihasilkan oleh contoh saat dijalankan di .NET Framework 3.5.

<?xml version ="1.0"?>
<configuration>
   <runtime>
      <TimeSpan_LegacyFormatMode enabled="true"/>
   </runtime>
</configuration>

Lihat juga