将日期值分配给2D数组以填充jtable

时间:2014-01-03 14:23:19

标签: java swing hibernate

开始日期是今天,结束日期应该是今天的日期+ 3年。举例说明日期是3.1.2014。结束日期是3.1.2017。我想使用2D数组填充jtable。 http://i.stack.imgur.com/eLR7F.jpg

    Date begindate = new Date();
    Calendar cal = Calendar.getInstance();
    cal.setTime(begindate);
    int today = cal.get(Calendar.DAY_OF_WEEK);
    cal.add(Calendar.YEAR, 3);
    Date enddate = cal.getTime();
    Date currentdate = begindate;
    while (true) {
        if (currentdate.getTime() >= enddate.getTime()) {
            break;
        } else {
        }
        Calendar c = Calendar.getInstance();
        c.setTime(begindate);
        c.add(Calendar.DATE, x++);
        Date newdate = c.getTime();
        int day = c.get(Calendar.DAY_OF_WEEK);
        currentdate = newdate;
    }

1 个答案:

答案 0 :(得分:0)

你的日历操作可能会起作用,虽然它会以某种方式伤害我的眼睛(像JodaTime这样的另一个图书馆会更好)。关于你的问题,我不确定你制定了什么。也许您想知道如何将日期映射到2D网格单元格。你的变量x是候选者。如果您知道连续多少个单元格(7?),那么您可以从x计数器和当前星期几中推断出当前日期必须放入哪个单元格。

关于您的编码风格:

我会避免空的其他分支。我也会避免像Calendar.getInstance()这样的结构,而是选择new GregorianCalendar(),因为你肯定不想要佛教日历。

我也更喜欢:

while (currentdate.getTime() < enddate.getTime()) {

顺便说一下,这里有一些未经测试的思想实验:

如果将x初始化为零,表示列= 0且行= 0,那么您将拥有以下关系: x = col + 7 * row =&gt; x / 7 = rowx % 7 = col

在此之后,您需要对工作日相对于列的位置应用更正,也许这样:

int m = (weekday - 1 - col) % 7; // weekday as Calendar-constant (Calendar.SUNDAY etc)
if (m < 0) {
  m += 7;
  row++;
}
col = (col + m) % 7;

所有这一切都没有保证,这只是您自己实验的一个提示。