如何使用构造函数设置日期?
public Date(int day, int month, int year)
{
this.day=day; // set day to 1-31
this.month=month; // set month to 1-12
this.year=year; // set year to 1900-9999
}
如果我使用
if(day<=1 || day >=31)
this.day=day;
else if(month<=1 || month>=12)
this.month=month;
else if(year<=1900 || year>=9999)
this.year=year
问题是,如果我这样做,它只会得到 0,但是如果我删除条件语句,则日期将接受到 32,月份将接受 13 以上,依此类推
最佳答案
好吧,你告诉我。你想要发生什么?以下是一些常见选项:
(推荐):规定显然不存在的给定日期不是构造函数的合法调用。换句话说,
new Date(32, 2, 2051)
无效。为此,请抛出异常。例如:if (day > 31) throw new IllegalArgumentException("Days must be between 1 and 31, inclusive");
使用滚动行为,并对年份进行四舍五入。这是一种“我不在乎,做某事没有意义,只是不要崩溃”的态度,并不推荐。例如,您可以将上述日期设置为 2051 年 3 月 4 日。
您选择的其他内容。毕竟,你是程序员。
请注意,您正在重新发明一个非常常见的轮子,因此,除非这是家庭作业或纯粹的学习练习(“纯粹”的意思是:一旦您完成了此代码,它就会被扔进垃圾箱),它是一个错误。使用LocalDate相反。
注意:日期很难。比你想象的要难。
关于Java 构造函数日期设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59480249/