2016-11-16 31 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日的不同方式的整個範圍。我知道錯誤出現時,整數保持正確的值,但新的值是01/01/0001 12:00:00:AM。

我不知道爲什麼整數y從2017變爲0001?

因此,錯誤消息是,年,月和日參數描述了 不可表示的DateTime。

回答

1

首先,你需要改變參數順序

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

其次,你可以使用DateTime.Parse或DateTime.TryParse從字符串

+0

你能提高'DateTime.Parse'和'DateTime.TryParse'的格式,使之更易於閱讀和識別爲代碼。 除此之外+1 –

1

獲取日期對象你以錯誤的順序的參數。

的順序是yearmonthday

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

您要創建哪些是無效的日期2017年1月1日。

MSDN page

+0

考慮使用'DateTime newDate'作爲'var'對於變量類型具有短名稱是不好的做法,因爲在聲明變量時使用實際數據類型時代碼更易於理解 –

+2

@ ZachRoss-Clyne - 你有參考嗎?鑑於ReSharper(例如)在提示我使用'var'而不是類型時沒有做出這種區分,我發現你的陳述很難相信。 – ChrisF

+2

@ ZachRoss-Clyne是純粹的偏好,不會對解決方案有任何改進。 – Jim