[Dato che non va bene se continuiamo nei commenti (i commenti saranno lunghi), mi limiterò a presentare quella che penso come soluzione qui]
Per formattare dateBuy
nel formato che desideri, dovresti anche inserire il formato della stringa in ToString()
Cioè, invece di
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString();
metti
dateBuy = (DateTime.ParseExact(dateBuy2, "yyyy-MM-dd", null)).ToString("yyyy-MM-dd");
Altrimenti, è possibile per ToString()
per produrre qualcosa come "2015-10-16 00:00:00 AM" invece di "2015-10-16"
Tuttavia, poiché usi ParseExact
, l'input per dateBuy2
deve anche essere nel formato "aaaa-MM-gg" che vanifica lo scopo. Potresti prendere in considerazione l'utilizzo di DateTimePicker
in modo da poter controllare il formato di input.
In alternativa, puoi utilizzare DateTime.Parse
o TryParse
(come suggerito da Martheen) invece, qualcosa del genere
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 l'input deve essere nel TextBox
è meglio che metti try-catch
per evitare che il tuo programma si arresti in modo anomalo per aver ricevuto input formattati in modo errato se usi Parse
.
Dove come se usassi TryParse
puoi inserirlo in if-else
block invece
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
}
Per ottenere CultureInfo
enum
devi aggiungere un riferimento a System.Globalization
[Modificato su suggerimento del Sig. Soner Gonul]