[Karena tidak baik jika kita melanjutkan di komentar (komentarnya akan panjang), saya hanya akan mengajukan apa yang saya pikirkan sebagai solusi di sini]
Untuk memformat dateBuy
ke format yang Anda inginkan, Anda juga harus meletakkan format string di ToString()
Artinya, alih-alih
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString();
taruh
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString("yyyy-MM-dd");
Jika tidak, dimungkinkan untuk ToString()
untuk menghasilkan sesuatu seperti "2015-10-16 12:00:00 AM" alih-alih "2015-10-16"
Namun, karena Anda menggunakan ParseExact
, masukan untuk dateBuy2
juga harus dalam format "yyyy-MM-dd" yang mengalahkan tujuan. Anda dapat mempertimbangkan untuk menggunakan DateTimePicker
sedemikian rupa sehingga Anda dapat mengontrol format input.
Atau, Anda dapat menggunakan DateTime.Parse
atau TryParse
(seperti yang disarankan oleh Martheen) sebagai gantinya, seperti ini
try {
DateTime dt = DateTime.Parse(txtDateBuy.Text);
dateBuy = dt.ToString("yyyy-MM-dd");
} catch (Exception exc) {
//wrong format, do something to tell the user
}
Jika input harus di TextBox
sebaiknya Anda memasukkan try-catch
untuk mencegah program Anda mogok karena mengambil input dengan format yang salah jika Anda menggunakan Parse
.
Dimana jika Anda menggunakan TryParse
Anda dapat memasukkannya ke dalam if-else
blokir pernyataan sebagai gantinya
DateTime dt;
if (DateTime.TryParse(txtDateBuy.Text, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out dt)) {
//correct format, do something using dt
} else {
//incorrect format, warns the user
}
Untuk mendapatkan CultureInfo
enum
anda perlu menambahkan referensi ke System.Globalization
[Diedit setelah saran yang diberikan oleh Pak Soner Gonul]