0

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

我有一些联系时刻需要自动分配到某个日期(一周中的某一天)并打印出来……</p>

假设从 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 个并再次检查......

依此类推,直到我有所有的时间,将它们添加到要打印的数组中

这是正确的方法还是更好的方法?

假设我们要在每个星期四预约,有没有办法从起点(例如从一月一号开始)查看第一天是什么?

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

任何建议都会更有帮助!谢谢大家

4

2 回答 2

1

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

于 2012-04-16T13:02:14.653 回答
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)
于 2014-06-27T17:59:05.950 回答