[Тъй като не е добре да продължим в коментарите (коментарите ще са дълги), просто ще пусна какво мисля като решение тук]
За да форматирате dateBuy
за формата, който искате, трябва също да поставите формата на низа в ToString()
Тоест вместо
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString();
сложи
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString("yyyy-MM-dd");
В противен случай е възможно за ToString()
да произведе нещо като "2015-10-16 12:00:00 AM" вместо "2015-10-16"
Въпреки това, тъй като използвате ParseExact
, входът за dateBuy2
трябва също да бъде във формат "гггг-ММ-дд", което побеждава целта. Може да помислите да използвате DateTimePicker
така че да можете да контролирате входния формат.
Като алтернатива можете да използвате DateTime.Parse
или TryParse
(както е предложено от Мартин) вместо това, нещо подобно
try {
DateTime dt = DateTime.Parse(txtDateBuy.Text);
dateBuy = dt.ToString("yyyy-MM-dd");
} catch (Exception exc) {
//wrong format, do something to tell the user
}
Ако въвеждането трябва да бъде в TextBox
по-добре сложете try-catch
за да предотвратите срива на програмата ви поради приемане на грешно форматиран вход, ако използвате Parse
.
Където сякаш използвате TryParse
можете да го поставите в if-else
вместо това блокировка
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
}
За да получите CultureInfo
enum
трябва да добавите препратка към System.Globalization
[Редактирано след предложение, дадено от г-н Сонер Гьонул]