DateTime month 0格式无效

Rai*_*oug 0 c# datetime android visual-studio

我在c#中有DateTime的奇怪行为.

我想在1月份初始化一个日期选择器.所以我开了一个新约会:

DateTime MyDate = new DateTime(2017, 0, 15);
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个例外:

System.ArgumentOutOfRangeException:Year,Month和Day参数描述不可表示的DateTime.

如果我使用(2017, 1, 15)它有效但时间对话框,初始化为:

DatePickerDialog dialog = new DatePickerDialog(
    Activity,
    this,
    MyDate.Year,
    MyDate.Month,
    MyDate.Day);
Run Code Online (Sandbox Code Playgroud)

去二月.

好吧,我试图"欺骗"并做了:

DateTime MyDate = new DateTime(2017, 1, 15);
DateTime = DateTime.AddMonths(-1);
Run Code Online (Sandbox Code Playgroud)

没有错误,但日期选择器在二月份.

拥有1月的唯一方法是:

DateTime MyDate = new DateTime(2017, 12, 15);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Cha*_*ger 7

DateTime.Month 是一个介于1到12之间的值,这与大多数人认为的月份"数字"是一致的.

根据android文档,DatePickerDialog您调用的构造函数接受从零开始的月份.它接受0-11范围内的值,因此您需要从中减去一个DateTime.Month.

DatePickerDialog dialog = new DatePickerDialog(Activity,
    this, MyDate.Year, MyDate.Month - 1, MyDate.Day);
Run Code Online (Sandbox Code Playgroud)