开始日期是今天,结束日期应该是今天的日期+ 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;
}
答案 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 = row
和x % 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;
所有这一切都没有保证,这只是您自己实验的一个提示。