[コメントを続けるのは良くないので(コメントは長くなります)、ここで解決策として考えていることを載せます]
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
への参照を追加する必要があります
[ソネル・ギョニュル氏の提案により編集]