[Já que não é bom se continuarmos nos comentários (os comentários serão longos), vou apenas colocar o que eu acho como solução aqui]
Para formatar
dateBuy
para o formato que você deseja, você também deve colocar o formato da string no ToString()
Ou seja, em vez de
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString();
por
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString("yyyy-MM-dd");
Caso contrário, é possível que o
ToString()
para produzir algo como "2015-10-16 12:00:00 AM" em vez de "2015-10-16" No entanto, como você usa
ParseExact
, a entrada para o dateBuy2
também deve estar no formato "aaaa-MM-dd" que anula o propósito. Você pode considerar usar DateTimePicker
para que você possa controlar o formato de entrada. Alternativamente, você pode usar
DateTime.Parse
ou TryParse
(como sugerido por Martheen) em vez disso, algo assim try {
DateTime dt = DateTime.Parse(txtDateBuy.Text);
dateBuy = dt.ToString("yyyy-MM-dd");
} catch (Exception exc) {
//wrong format, do something to tell the user
}
Se a entrada tiver que estar no
TextBox
é melhor você colocar try-catch
para evitar que seu programa falhe por receber entradas formatadas incorretamente se você usar Parse
. Onde como se você usasse
TryParse
você pode colocá-lo em if-else
instrução de bloco em vez disso 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
}
Para obter
CultureInfo
enum
você precisa adicionar referência a System.Globalization
[Editado após sugestão dada pelo Sr. Soner Gonul]