Rumah > pembangunan bahagian belakang > C++ > Kenapa DateTime.Parse () gagal dengan 'String tidak diiktiraf sebagai DateTime yang sah' dan bagaimana saya boleh memperbaikinya?

Kenapa DateTime.Parse () gagal dengan 'String tidak diiktiraf sebagai DateTime yang sah' dan bagaimana saya boleh memperbaikinya?

Linda Hamilton
Lepaskan: 2025-01-27 00:41:08
asal
537 orang telah melayarinya

Why Does DateTime.Parse() Fail with

"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()

Kaedah

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>
Salin selepas log masuk

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>
Salin selepas log masuk
Perbezaan antara

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan