"String tidak diiktiraf sebagai format DateTime yang sah dd/MM/yyyy" Ralat menghuraikan
Apabila menggunakan DateTime.Parse()
untuk menukar rentetan dalam format "dd/MM/yyyy" kepada objek DateTime
, anda mungkin menghadapi ralat "Rentetan tidak dikenali sebagai DateTime yang sah". Ralat ini menunjukkan bahawa format rentetan tidak sepadan dengan format jangkaan yang ditentukan oleh lalai IFormatProvider
.
Penyelesaian:
Kaedah 1: Gunakan ParseExact()
DateTime.ParseExact()
secara eksplisit menyatakan format tarikh yang diingini, mengatasi format khusus budaya lalai. Kaedah ini memerlukan tiga parameter: rentetan untuk ditukar, rentetan format dan IFormatProvider
.
<code class="language-csharp">DateTime date = DateTime.ParseExact(this.Text, "dd/MM/yyyy", null);</code>
Kaedah 2: Penyesuaian IFormatProvider
Sebagai alternatif, anda boleh membuat IFormatProvider
tersuai untuk menyediakan pemformatan khusus budaya yang diingini. Pendekatan ini membolehkan anda mengekalkan fleksibiliti DateTime.Parse()
sambil mengikut format tersuai.
<code class="language-csharp">// 创建一个具有所需格式的自定义提供程序 CultureInfo customCulture = new CultureInfo("en-US"); customCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy"; // 使用自定义提供程序进行解析 DateTime date = DateTime.Parse(this.Text, customCulture);</code>
Parse()
dan ParseExact()
:
ParseExact()
menentukan format secara eksplisit, manakala Parse()
bergantung pada lalai IFormatProvider
(biasanya budaya semasa). ParseExact()
lebih tepat dan selamat jenis kerana ia mengesahkan rentetan mengikut format yang ditentukan. Parse()
Lebih fleksibel, membenarkan format tarikh yang berbeza berdasarkan budaya sistem. Cadangan:
Kedua-dua kaedah adalah sah selagi format rentetan input adalah betul. Dari perspektif keselamatan dan ketepatan jenis, ParseExact()
diutamakan kerana ia menguatkuasakan format tertentu. Tetapi jika format tarikh mungkin berbeza-beza merentas budaya, Parse()
mungkin lebih mudah, kerana ia akan menyesuaikan secara automatik dengan tempat pengguna. Akhirnya, pendekatan terbaik bergantung pada keperluan aplikasi tertentu.
Atas ialah kandungan terperinci Kenapa DateTime.Parse () gagal dengan 'String tidak diiktiraf sebagai DateTime yang sah' dan bagaimana saya boleh memperbaikinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!