2012-04-16 2 views
0

Для задания для школы мне нужно «рассчитать» определенные даты.Создание назначений (дата)

У меня есть ряд контактных моментов, которые я должен автоматически назначить на определенную дату (день в неделю) и печать ...

Скажем, с первого января я должен назначить каждый понедельник к контакту момент, если в этот понедельник праздник или так. У меня есть список допустимых дней в моей базе данных в формате даты для проверки.

То, что я не до сих пор:

За день я думал начать в определенный день, а затем добавить 7 Дэй

Я бы установить дату:

set(int year, int month, int date) 

А потом добавив 7 раз, чтобы перейти с недели на неделю:

cal.add(Calendar.DAY_OF_MONTH, 7); 

Тогда я бы уточнил, date равна дате в моей таблице 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 all

ответ

1

Поскольку вы будете сильно сосредотачиваться на датах, я бы порекомендовал вам взглянуть на API . Он предлагает больше функциональности, чем стандартный API Java DateTime. Вы можете посмотреть 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) 
Смежные вопросы