Saya ragu saya satu-satunya yang menemukan solusi ini, tetapi jika Anda memiliki solusi yang lebih baik, silakan posting di sini. Saya hanya ingin meninggalkan pertanyaan ini di sini sehingga saya dan orang lain dapat mencarinya nanti.
Saya perlu mengetahui apakah tanggal yang valid telah dimasukkan ke dalam kotak teks dan ini adalah kode yang saya buat. Saya mengaktifkan ini saat fokus meninggalkan kotak teks.
try
{
DateTime.Parse(startDateTextBox.Text);
}
catch
{
startDateTextBox.Text = DateTime.Today.ToShortDateString();
}
c#
datetime
validation
Matt
sumber
sumber
Parse
menggunakanTryParse
referensiource.microsoft.com/#mscorlib/system/globalization/…Jawaban:
Ini saya percaya lebih cepat dan itu berarti Anda tidak perlu menggunakan try / catches yang jelek :)
misalnya
sumber
if(DateTime.TryParse(startDateTextBox.Text, out var temp))
:)Jangan gunakan pengecualian untuk kontrol aliran. Gunakan DateTime.TryParse dan DateTime.TryParseExact . Secara pribadi saya lebih suka TryParseExact dengan format tertentu, tapi saya rasa ada kalanya TryParse lebih baik. Contoh penggunaan berdasarkan kode asli Anda:
Alasan memilih pendekatan ini:
sumber
Berikut variasi lain dari solusi yang mengembalikan nilai true jika string dapat diubah menjadi
DateTime
tipe, dan false sebaliknya.sumber
Saya akan menggunakan metode DateTime.TryParse (): http://msdn.microsoft.com/en-us/library/system.datetime.tryparse.aspx
sumber
Bagaimana dengan menggunakan TryParse ?
sumber
Masalah dengan penggunaan
DateTime.TryParse
adalah bahwa itu tidak mendukung kasus penggunaan entri data yang sangat umum dari tanggal yang dimasukkan tanpa pemisah, misalnya011508
.Berikut adalah contoh bagaimana mendukungnya. (Ini dari kerangka kerja yang saya bangun, jadi tanda tangannya agak aneh, tetapi logika intinya harus dapat digunakan):
sumber
// misalkan string input adalah format tanggal pendek.
misalnya "2013/7/5" mengembalikan nilai benar atau
"2013/2/31" mengembalikan salah.
http://forums.asp.net/t/1250332.aspx/1
// bool booleanValue = ValidateBirthday ("12:55"); mengembalikan salah
sumber
sumber
Semua Jawabannya Cukup bagus tetapi jika Anda ingin menggunakan satu fungsi, ini mungkin berhasil.
sumber
Anda juga dapat menentukan
DateTime
format tertentuCultureInfo
sumber
sumber
string
yang mungkin atau mungkin tidak mengandungDateTIme
nilai. Anda memeriksa untuk melihat apakah suatu yang diberikanDateTime
memiliki nilai default (sesuai dengan0001-01-01T00:00:00.0000000
). Bagaimana ini menjawab pertanyaan?sumber
sumber