生成约会(日期)

时间:2012-04-16 12:57:03

标签: java calendar

对于学校作业,我需要能够“计算”某些日期。

我有一些联系时刻需要自动分配到某个特定日期(一周中的某一天)并打印...

让我们说从1月1日开始,我需要将每个星期一分配到一个联系时刻,除非这个星期一是假期。我在数据库中有一个有效日期列表,以日期格式进行检查。

到目前为止我所拥有的:

那天我想在某一天开始然后加上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个并再次检查....

所以在我有所有时刻之前,将它们添加到数组中进行打印

这是采取这种方式还是更好的方式的正确方法?

假设我们想在每个星期四预约,有没有办法看到从起点开始的第一天(例如从1月1日开始)。?

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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)