2012-04-16 43 views
0

对于学校的作业,我需要能够“计算”某些日期。生成约会(日期)

我有很多接触的时刻,我需要自动分配给某一特定日期(日当周)和打印的...

让我们从一月的第一个说我需要每周一分配给联系人除非这个星期一是假期左右。我在日期格式的数据库中有一个有效日期列表,以进行检查。

我直到现在:

一天我在想,开始在某月某日,然后新增7天的

我会成立日期:

set(int year, int month, int date) 

然后加上7从一周到一周:

cal.add(Calendar.DAY_OF_MONTH, 7); 

我会检查是否这日期等于我的MySQL表中的日期。

compareDatesByCalendar(Date javaDate, Date mysqlDate) { 
    Calendar javaCal = Calendar.getInstance(); 
    Calendar mysqlCal = Calendar.getInstance(); 
    javaCal.setTime(javaDate); 
    mysqlCal.setTime(mysqlDate); 
    if (javaCal.equals(mysqlCal)) { 
     …….. 
    } 
else{ 
….} 

如果一天不在列表中,我会再添加7个,然后再次检查......。

依此类推,直到我把所有的时刻,增加对他们的阵列打印

这是借此以正确的方式或更好的办法?

假设我们想每个星期四进行一次预约,是否有办法查看从起点开始的第一天(例如从一月份开始)。

如果最多有几周(可用时间)会怎么样?我怎么能阻止这个?

任何建议会更有帮助! Thx全部

回答

1

由于您将重点关注日期,我建议您查看Joda API。它提供比标准DateTime Java API更多的功能。你可以看看here开始。

0

我最近开发的Lamma是专为解决这个用例而设计的。

HolidayRule ukHoliday2015 = simpleHolidayRule(
      date(2015, 1, 1), date(2015, 4, 3), date(2015, 4, 6), 
      date(2015, 5, 4), date(2015, 5, 25), date(2015, 8, 31), 
      date(2015, 12, 25), date(2015, 12, 28) 
    ); 

    List<Date> dates = Dates.from(2015, 12, 23).to(2015, 12, 30).byDays(2).except(weekends()).except(ukHoliday2015).build(); 

    for (Date date: dates) { 
     System.out.println(date); 
    } 

输出是:

Date(2015,12,23) 
Date(2015,12,29)