[Dado que no es bueno si continuamos en los comentarios (los comentarios serán largos), solo pondré lo que pienso como una solución aquí]
Para formatear dateBuy
al formato que desee, también debe poner el formato de cadena en ToString()
Es decir, en lugar de
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString();
poner
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString("yyyy-MM-dd");
De lo contrario, es posible que ToString()
para producir algo como "2015-10-16 12:00:00 AM" en lugar de "2015-10-16"
Sin embargo, dado que usa ParseExact
, la entrada para dateBuy2
también debe tener el formato "yyyy-MM-dd", lo que anula el propósito. Puede considerar usar DateTimePicker
de modo que pueda controlar el formato de entrada.
Alternativamente, puede usar DateTime.Parse
o TryParse
(según lo sugerido por Martheen) en su lugar, algo como esto
try {
DateTime dt = DateTime.Parse(txtDateBuy.Text);
dateBuy = dt.ToString("yyyy-MM-dd");
} catch (Exception exc) {
//wrong format, do something to tell the user
}
Si la entrada tiene que estar en el TextBox
mejor pon try-catch
para evitar que su programa se bloquee por tomar una entrada con formato incorrecto si usa Parse
.
Donde como si usaras TryParse
puedes ponerlo en if-else
sentencia de bloque en su lugar
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 obtener CultureInfo
enum
necesita agregar una referencia a System.Globalization
[Editado después de la sugerencia dada por el Sr. Soner Gonul]