2016-11-16 4 views
-3

私は3つの整数値を持っています。それらを組み合わせてdatetime変数を作成しようとしています。私はdatetimepickerを通して年を指定するユーザを必要としているので、これをやろうとしています。その配列の中で、その年の最初の月の最初の日に開始する必要があります。整数をDateTimeに結合する

は現在、私は、

int b = 1; 
int m = 1; 
int y = dateTimePicker1.Value.Year; 

DateTime newdate = new DateTime(b, m, y); 

私は2017年1月1日を形成するために一緒に整数をコーミングの異なる方法の全範囲を試してみたしています。エラーが表示されたときに整数が正しい値を保持していますが、newdateの値は01/01/0001 12:00:00:AMです。

なぜ整数yが2017から0001に変更されるのか分かりませんか?

結果として、エラーメッセージは、年、月、日のパラメータが の表現できないDateTimeを表します。

答えて

1

まず、あなたはあなたが間違った順序でパラメータを持っているあなたは、文字列

+0

あなたはそれが読みやすく、コードとして認識するようにするために、 'DateTime.Parse'と' DateTime.TryParse'の書式設定を改善することができました。 +1 –

1

から日付オブジェクトを取得するにはDateTime.ParseまたはDateTime.TryParseを使用することができるパラメータの順序

DateTime newdate = new DateTime(year, month, day); 

セカンドを変更する必要があります。

注文はyearmonthday次のとおりです。

var newDate = new DateTime(y, m, b); 

あなたが有効ではありません日付2017年1月1日を作成しようとしています。

MSDN page

+0

変数を宣言するときに実際のデータ型を使用するときにコードが理解できるように、短い名前を持つ変数型では、 'var'は' DateTime newDate'を使用することをお勧めします。 –

+2

@ ZachRoss-Clyne - それについての参考資料はありますか? ReSharper(例えば)は、私があなたのステートメントを信じるのが難しいと思うタイプではなく、 'var'を使うことを示唆しているときにこの区別をしていないことを考えると、 – ChrisF

+2

@ ZachRoss-Clyneは純粋な好みであり、ソリューションに改善を加えません。 – Jim

関連する問題