2016-11-16 70 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