[android]日期时间月 0 无效格式

发布时间: 2017/3/19 3:59:38
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有日期时间在 c# 中的奇怪行为。

我试图初始化 datepicker 在 1 月。让一个新的日期︰

DateTime MyDate = new DateTime(2017, 0, 15);

却此异常︰

System.ArgumentOutOfRangeException︰ 年、 月和日的参数描述不能精确表示的日期时间。

如果我使用 (2017, 1, 15) 它工作但 time dialog 、 初始化︰

DatePickerDialog dialog = new DatePickerDialog(
    Activity,
    this,
    MyDate.Year,
    MyDate.Month,
    MyDate.Day);

在 2 月去。

嗯,我试图"欺骗"和做︰

DateTime MyDate = new DateTime(2017, 1, 15);
DateTime = DateTime.AddMonths(-1);

没有错误,但日期选取器在 2 月去。

有一月的唯一方法是︰

DateTime MyDate = new DateTime(2017, 12, 15);

我到底做错了?

解决方法 1:

问题是如何 DateTime 对象对待的月份值 (1-12) 和如何 DatePickerDialog 对待的月份值 (0-11)。


DateTime构造函数︰

为 DateTime 的怪异行为

DateTime MyDate = new DateTime(2017, 0, 15);

如果我们看看 DateTime 构造函数,它清楚的月份值应该是1 到 12,这不是在你的案子中有效,因此异常。我们可以纠正它如下图所示︰

DateTime MyDate = new DateTime(2017, 1, 15);

DatePickerDialog构造函数︰

当我们尝试-时,将出现异常 (或奇怪的行为) new DatePickerDialog 中的月份值结合 DateTime 作为构造函数的 DatePickerDialog 预计从0-11月份值。

据说, int: the initially selected month (0-11 for compatibility with MONTH)

可随后的方法是给予正确 index 月到 DatePickerDialog 构造函数,如下所示︰

DateTime MyDate = new DateTime(2017, 1, 15);
DatePickerDialog dialog = new DatePickerDialog(Activity,
                                               this,
                                               MyDate.Year,
                                               MyDate.Month - 1,
                                               MyDate.Day);
赞助商