[コメントを続けるのは良くないので(コメントは長くなります)、ここで解決策として考えていることを載せます]
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」の代わりに「2015-10-1612:00:00AM」のようなものを生成するには
ただし、ParseExactを使用しているため 、dateBuy2の入力 また、目的に反する「yyyy-MM-dd」の形式である必要があります。 DateTimePickerの使用を検討してください 入力形式を制御できるようにします。
または、DateTime.Parseを使用することもできます またはTryParse (Martheenによって提案されたように)代わりに、このようなもの
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への参照を追加する必要があります
[ソネル・ギョニュル氏の提案により編集]