我有一个程序可以将数字月/日/年格式的日期转换为普通格式(例如2010年12月31日)。
我不想导入任何东西,或者使用日期对象来处理我正在做的事情。
在继续寻找每年的最大天数之前,我正试图按月完成。我试图将月份与天数相匹配(省略2月,因为它取决于它是否为闰年)。
这对我不起作用。我认为这是因为格式。
try {
if (m == 1 && (d > 31 || d < 1)) { // jan
} else if (m == 3 && (d > 31 || d < 1)) { // mar
} else if (m == 4 && (d > 30 || d < 1)) { // apr
} else if (m == 5 && (d > 31 || d < 1)) { // may
} else if (m == 6 && (d > 30 || d < 1)) { // june
} else if (m == 7 && (d > 31 || d < 1)) { // july
} else if (m == 8 && (d > 31 || d < 1)) { // aug
} else if (m == 9 && (d > 30 || d < 1)) { // sept
} else if (m == 10 && (d > 30 || d < 1)) { // oct
} else if (m == 11 && (d > 30 || d < 1)) { // nov
} else if (m == 12 && (d > 31 || d < 1)) // dec
throw new DayException(day);
} catch (Exception e) {
throw new DayException(day);
}
有没有更简单的方法来验证这一天?
答案 0 :(得分:5)
假设你现在不关心闰年,你可以做这样的事情。
int[] daysInMonth = new int[] { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (day < 1 || day > daysInMonth[month]){
throw new DayException(day);
}
答案 1 :(得分:2)
应该是if (m == 1 && (d <= 31 && d >= 1))
。仅当月份为1且日期在1到31之间(包括两者)时,它才是Jan。