根据月份和年份查找日期

时间:2014-02-19 08:10:55

标签: java date

我有一个程序可以将数字月/日/年格式的日期转换为普通格式(例如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);
    }

有没有更简单的方法来验证这一天?

2 个答案:

答案 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。