Saya perlu melakukan pemeriksaan berdasarkan nilai string apakah itu tanggal atau desimal tetapi tanggal parse selalu mengembalikan true untuk desimal.
string val = "3.5";
DateTime oDate = DateTime.Parse(val);
Ini mengembalikan tanggal yang valid 3/5/2019
.
Bagaimana cara memvalidasi string untuk mengetahui tanggal yang valid ketika format tanggal tidak diketahui?
DateTime.ParseExact
jika Anda tahu format mana yang dapat / harus diambilTryParseExact
dan menentukan format tanggal yang valid.DateTime.Parse
mencoba beberapa pola. Jika Anda hanya ingin mengenali yang spesifik, coba parsing secara khusus.Jawaban:
Masalahnya adalah bahwa
"3.5"
ini dianggap sebagai tanggal yang valid (dan juga desimal).Jika Anda ingin jenis desimal untuk selalu "menang" (yaitu Anda tidak ingin
isDate
danisDecimal
untuk kedua betrue
), termasuk cek desimal dalam validasi Anda.Salah satu cara untuk melakukannya adalah dengan menggunakan
TryParse
metode (yang mengembalikan abool
jika string dapat diuraikan ke jenis, dan yang menetapkanout
parameter ke nilai yang dikonversi) untuk menentukan apakah string dapat dikonversi ke suatu jenis, misalnya:sumber
isDate
inifalse
karena itu termasuk cek untukisDecimal
. Bukankah itu yang kamu minta?Periksa dokumentasi resmi tentang ParseExact
Jika Anda tahu representasi yang tepat, Anda dapat melakukan sesuatu seperti ini:
Jika Anda tidak mengetahuinya, maka Anda terjebak dengan konvensi budaya
sumber