List of usage examples for org.joda.time DateTime plusWeeks
public DateTime plusWeeks(int weeks)
From source file:com.google.android.apps.paco.NonESMSignalGenerator.java
License:Open Source License
DateTime getNthDOWOfMonth(DateTime midnightTomorrow, Integer nthOfMonth, Integer dow) { int dtconstDow = dow == 0 ? 7 : dow; DateTime first = midnightTomorrow.withDayOfMonth(1); if (first.getDayOfWeek() > dtconstDow) { return first.plusWeeks(nthOfMonth).withDayOfWeek(dtconstDow); } else {//ww w . j a v a2 s. c o m return first.plusWeeks(nthOfMonth - 1).withDayOfWeek(dtconstDow); } }
From source file:com.google.android.apps.paco.NonESMSignalGenerator.java
License:Open Source License
private DateTime nextRepeatWeekly(DateTime midnightNextDay) { if (schedule.getRepeatRate() == 1) { return midnightNextDay; }/* www.ja va 2s. c o m*/ int distanceBetweenStartAndTomorrow = Weeks .weeksBetween(new DateTime(schedule.getBeginDate()).toDateMidnight(), midnightNextDay).getWeeks(); if (distanceBetweenStartAndTomorrow == 0 || distanceBetweenStartAndTomorrow == schedule.getRepeatRate()) { if ((distanceBetweenStartAndTomorrow == 0 && midnightNextDay .getDayOfWeek() <= new DateMidnight(schedule.getBeginDate()).getDayOfWeek())) { // we crossed a week boundary, so add one week. return midnightNextDay.plusWeeks(schedule.getRepeatRate() - 1); } return midnightNextDay; } else if (distanceBetweenStartAndTomorrow > schedule.getRepeatRate()) { int remainder = distanceBetweenStartAndTomorrow % schedule.getRepeatRate(); return midnightNextDay.plusWeeks(schedule.getRepeatRate() - remainder); } else { return midnightNextDay.plusWeeks(schedule.getRepeatRate() - distanceBetweenStartAndTomorrow); } }
From source file:com.hack23.cia.service.component.agent.impl.riksdagen.workgenerator.RiksdagenDocumentListWorkGeneratorImpl.java
License:Apache License
@Override public void generateWorkOrders() { try {/* ww w. j a v a 2s.c om*/ final int startYearForDocumentElement = getImportService().getStartYearForDocumentElement(); final org.joda.time.format.DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd"); DateTime fromDateTime = fmt.parseDateTime(startYearForDocumentElement + "-01-01"); DateTime loadedWeekDate = fmt.parseDateTime(startYearForDocumentElement + "-01-01"); final DateTime toDate = new DateTime(); while (loadedWeekDate.isBefore(toDate)) { loadedWeekDate = loadedWeekDate.plusWeeks(1); sendMessage(loadDocumentWorkdestination, new LoadDocumentWork(fmt.print(fromDateTime), fmt.print(loadedWeekDate))); fromDateTime = fromDateTime.plusWeeks(1); } } catch (final Exception e) { LOGGER.warn("error generating work for loading documents", e); } }
From source file:com.linagora.obm.ui.scenario.event.EventStepdefs.java
License:Open Source License
@Then("^event \"([^\"]*)\" appears every week on saturday, first is (\\d+)/(\\d+)/(\\d+) from (\\d+):(\\d+) to (\\d+):(\\d+)$") public void eventAppearsEveryWeek(String title, int day, int month, int year, int beginHour, int beginMin, int endHour, int endMin) { DateTime dateTime = dateTime(day, month, year, beginHour, beginMin); String expectedEventDatesTitle = expectedEventDatesTitle(beginHour, beginMin, endHour, endMin); for (int numberOfChecks = 0; numberOfChecks < 5; numberOfChecks++) { WebElement divElement = processedCalendarPage.getDivByTitle(title); assertThat(divElement.getAttribute("id")).endsWith(String.valueOf(dateTime.getMillis() / 1000)); WebElement hrefElement = divElement.findElement(new ByCssSelector("a")); assertThat(hrefElement.getText()).isEqualTo(expectedEventDatesTitle); dateTime = dateTime.plusWeeks(1); processedCalendarPage.calendarNavBarWidget().nextPage(); }//w w w . ja v a 2s .c o m }
From source file:com.metinkale.prayerapp.vakit.times.Times.java
License:Apache License
@NonNull private Collection<Alarm> getAlarms() { Collection<Alarm> alarms = new ArrayList<>(); LocalDate cal = LocalDate.now(); for (int ii = 0; ii <= 1/* next day */; ii++) { for (Vakit v : Vakit.values()) { if (isNotificationActive(v)) { if (v != Vakit.SABAH) { int vakit = v.ordinal(); if (vakit != 0) { vakit--;/*from ww w . j av a 2s . com*/ } long mills = getTimeCal(cal, vakit).toDateTime().getMillis(); if (System.currentTimeMillis() < mills) { Alarm a = new Alarm(); a.city = getID(); a.early = false; a.cuma = false; a.time = mills; a.vakit = v; a.dayOffset = ii; alarms.add(a); } } else { long mills; if (isAfterImsak()) { mills = getTimeCal(cal, 0).toDateTime().getMillis() + getSabahTime() * 60 * 1000; } else { mills = getTimeCal(cal, 1).toDateTime().getMillis() - getSabahTime() * 60 * 1000; } if (System.currentTimeMillis() < mills) { Alarm a = new Alarm(); a.city = getID(); a.cuma = false; a.early = false; a.time = mills; a.vakit = v; a.dayOffset = ii; alarms.add(a); } } } if (isEarlyNotificationActive(v)) { if (v != Vakit.SABAH) { int vakit = v.ordinal(); if (vakit != 0) { vakit--; } int early = getEarlyTime(v); long mills = getTimeCal(cal, vakit).toDateTime().getMillis() - early * 60 * 1000; if (System.currentTimeMillis() < mills) { Alarm a = new Alarm(); a.city = getID(); a.early = true; a.cuma = false; a.time = mills; a.vakit = v; a.dayOffset = ii; alarms.add(a); } } } } cal = cal.plusDays(1); } if (isCumaActive()) { int early = getCumaTime(); DateTime c = DateTime.now().withDayOfWeek(DateTimeConstants.FRIDAY); if ((c.getMillis() + 1000) < System.currentTimeMillis()) { c = c.plusWeeks(1); } long mills = getTimeCal(c.toLocalDate(), 2).toDateTime().getMillis(); mills -= early * 60 * 1000; if (System.currentTimeMillis() < mills) { Alarm a = new Alarm(); a.city = getID(); a.cuma = true; a.early = false; a.time = mills; a.vakit = Vakit.OGLE; a.dayOffset = 0; alarms.add(a); } } return alarms; }
From source file:com.microsoft.office365.snippetapp.Snippets.CalendarSnippets.java
License:MIT License
/** * Creates a recurring event. This snippet will create an event that recurs * every Tuesday and Thursday from 1PM to 2PM. You can modify this snippet * to work with other recurrence patterns. * * @param subject The subject of the event * @param itemBodyHtml The body of the event as HTML * @param attendees A list of attendee email addresses * @return String The id of the created event */// w w w .jav a 2 s .c om public String createRecurringCalendarEvent(String subject, String itemBodyHtml, List<String> attendees) throws ExecutionException, InterruptedException { //Create a new Office 365 Event object Event newEvent = new Event(); newEvent.setSubject(subject); ItemBody itemBody = new ItemBody(); itemBody.setContent(itemBodyHtml); itemBody.setContentType(BodyType.HTML); newEvent.setBody(itemBody); //Set the attendee list List<Attendee> attendeeList = convertEmailStringsToAttendees(attendees); newEvent.setAttendees(attendeeList); //Set start date to the next occurring Tuesday DateTime startDate = DateTime.now(); if (startDate.getDayOfWeek() < DateTimeConstants.TUESDAY) { startDate = startDate.dayOfWeek().setCopy(DateTimeConstants.TUESDAY); } else { startDate = startDate.plusWeeks(1); startDate = startDate.dayOfWeek().setCopy(DateTimeConstants.TUESDAY); } //Set start time to 1 PM startDate = startDate.hourOfDay().setCopy(13).withMinuteOfHour(0).withSecondOfMinute(0) .withMillisOfSecond(0); //Set end time to 2 PM DateTime endDate = startDate.hourOfDay().setCopy(14); //Set start and end time on the new Event (next Tuesday 1-2PM) newEvent.setStart(startDate.toCalendar(Locale.getDefault())); newEvent.setIsAllDay(false); newEvent.setEnd(endDate.toCalendar(Locale.getDefault())); //Configure the recurrence pattern for the new event //In this case the meeting will occur every Tuesday and Thursday from 1PM to 2PM RecurrencePattern recurrencePattern = new RecurrencePattern(); List<DayOfWeek> daysMeetingRecursOn = new ArrayList(); daysMeetingRecursOn.add(DayOfWeek.Tuesday); daysMeetingRecursOn.add(DayOfWeek.Thursday); recurrencePattern.setType(RecurrencePatternType.Weekly); recurrencePattern.setDaysOfWeek(daysMeetingRecursOn); recurrencePattern.setInterval(1); //recurs every week //Create a recurring range. In this case the range does not end //and the event occurs every Tuesday and Thursday forever. RecurrenceRange recurrenceRange = new RecurrenceRange(); recurrenceRange.setType(RecurrenceRangeType.NoEnd); recurrenceRange.setStartDate(startDate.toCalendar(Locale.getDefault())); //Create a pattern of recurrence. It contains the recurrence pattern //and recurrence range created previously. PatternedRecurrence patternedRecurrence = new PatternedRecurrence(); patternedRecurrence.setPattern(recurrencePattern); patternedRecurrence.setRange(recurrenceRange); //Finally pass the patterned recurrence to the new Event object. newEvent.setRecurrence(patternedRecurrence); //Create the event and return the id return mCalendarClient.getMe().getEvents().select("ID").add(newEvent).get().getId(); }
From source file:com.money.manager.ex.servicelayer.RecurringTransactionService.java
License:Open Source License
/** * @param date to start calculate/*from ww w .jav a 2s. c om*/ * @param repeatType type of repeating transactions * @param numberOfPeriods Number of instances (days, months) parameter. Used for In (x) Days, for * example to indicate x. * @return next Date */ public DateTime getNextScheduledDate(DateTime date, Recurrence repeatType, Integer numberOfPeriods) { if (numberOfPeriods == null || numberOfPeriods == Constants.NOT_SET) { numberOfPeriods = 0; } if (repeatType.getValue() >= 200) { repeatType = Recurrence.valueOf(repeatType.getValue() - 200); } // set auto execute without user acknowledgement if (repeatType.getValue() >= 100) { repeatType = Recurrence.valueOf(repeatType.getValue() - 100); } // set auto execute on the next occurrence DateTime result = new DateTime(date); switch (repeatType) { case ONCE: //none break; case WEEKLY: //weekly result = result.plusWeeks(1); break; case BIWEEKLY: //bi_weekly result = result.plusWeeks(2); break; case MONTHLY: //monthly result = result.plusMonths(1); break; case BIMONTHLY: //bi_monthly result = result.plusMonths(2); break; case QUARTERLY: //quarterly result = result.plusMonths(3); break; case SEMIANNUALLY: //half_year result = result.plusMonths(6); break; case ANNUALLY: //yearly result = result.plusYears(1); break; case FOUR_MONTHS: //four_months result = result.plusMonths(4); break; case FOUR_WEEKS: //four_weeks result = result.plusWeeks(4); break; case DAILY: //daily result = result.plusDays(1); break; case IN_X_DAYS: //in_x_days case EVERY_X_DAYS: //every_x_days result = result.plusDays(numberOfPeriods); break; case IN_X_MONTHS: //in_x_months case EVERY_X_MONTHS: //every_x_months result = result.plusMonths(numberOfPeriods); break; case MONTHLY_LAST_DAY: //month (last day) // if the date is not the last day of this month, set it to the end of the month. // else set it to the end of the next month. DateTime lastDayOfMonth = MmxDateTimeUtils.getLastDayOfMonth(result); if (!result.equals(lastDayOfMonth)) { // set to last day of the month result = lastDayOfMonth; } else { result = lastDayOfMonth.plusMonths(1); } break; case MONTHLY_LAST_BUSINESS_DAY: //month (last business day) // if the date is not the last day of this month, set it to the end of the month. // else set it to the end of the next month. DateTime lastDayOfMonth2 = MmxDateTimeUtils.getLastDayOfMonth(result); if (!result.equals(lastDayOfMonth2)) { // set to last day of the month result = lastDayOfMonth2; } else { result = lastDayOfMonth2.plusMonths(1); } // get the last day of the next month, // then iterate backwards until we are on a weekday. while (result.getDayOfWeek() == DateTimeConstants.SATURDAY || result.getDayOfWeek() == DateTimeConstants.SUNDAY) { result = result.minusDays(1); } break; } return result; }
From source file:com.norconex.collector.http.recrawl.impl.GenericRecrawlableResolver.java
License:Apache License
private boolean isRecrawlableFromFrequency(SitemapChangeFrequency cf, PreviousCrawlData prevData, String context) {// w w w.j a va2 s . co m if (cf == null) { return true; } if (LOG.isDebugEnabled()) { LOG.debug("The " + context + " change frequency is " + cf + " for: " + prevData.getReference()); } if (cf == SitemapChangeFrequency.ALWAYS) { return true; } if (cf == SitemapChangeFrequency.NEVER) { return false; } DateTime minCrawlDate = new DateTime(prevData.getCrawlDate()); switch (cf) { case HOURLY: minCrawlDate = minCrawlDate.plusHours(1); break; case DAILY: minCrawlDate = minCrawlDate.plusDays(1); break; case WEEKLY: minCrawlDate = minCrawlDate.plusWeeks(1); break; case MONTHLY: minCrawlDate = minCrawlDate.plusMonths(1); break; case YEARLY: minCrawlDate = minCrawlDate.plusYears(1); break; default: break; } if (minCrawlDate.isBeforeNow()) { if (LOG.isDebugEnabled()) { LOG.debug("Recrawl suggested according to " + context + " directive (change frequency < elapsed time since " + prevData.getCrawlDate() + ") for: " + prevData.getReference()); } return true; } if (LOG.isDebugEnabled()) { LOG.debug("No recrawl suggested according to " + context + " directive (change frequency >= elapsed time since " + prevData.getCrawlDate() + ") for: " + prevData.getReference()); } return false; }
From source file:com.prayer.vakit.times.Times.java
License:Apache License
Collection<Alarm> getAlarms() { Collection<Alarm> alarms = new ArrayList<>(); LocalDate cal = LocalDate.now(); for (int ii = 0; ii <= 1/* next day */; ii++) { for (Vakit v : Vakit.values()) { if (isNotificationActive(v)) { if (v != Vakit.SABAH) { int vakit = v.ordinal(); if (vakit != 0) { vakit--;// w w w. jav a2 s . c o m } long mills = getTimeCal(cal, vakit).toDateTime().getMillis(); if (System.currentTimeMillis() < mills) { Alarm a = new Alarm(); a.city = getID(); a.early = false; a.cuma = false; a.time = mills; a.vakit = v; a.dayOffset = ii; alarms.add(a); } } else { long mills; if (isAfterImsak()) { mills = getTimeCal(cal, 0).toDateTime().getMillis() + getSabahTime() * 60 * 1000; } else { mills = getTimeCal(cal, 1).toDateTime().getMillis() - getSabahTime() * 60 * 1000; } if (System.currentTimeMillis() < mills) { Alarm a = new Alarm(); a.city = getID(); a.cuma = false; a.early = false; a.time = mills; a.vakit = v; a.dayOffset = ii; alarms.add(a); } } } if (isEarlyNotificationActive(v)) { if (v != Vakit.SABAH) { int vakit = v.ordinal(); if (vakit != 0) { vakit--; } int early = getEarlyTime(v); long mills = getTimeCal(cal, vakit).toDateTime().getMillis() - early * 60 * 1000; if (System.currentTimeMillis() < mills) { Alarm a = new Alarm(); a.city = getID(); a.early = true; a.cuma = false; a.time = mills; a.vakit = v; a.dayOffset = ii; alarms.add(a); } } } } cal = cal.plusDays(1); } if (isCumaActive()) { int early = getCumaTime(); DateTime c = DateTime.now().withDayOfWeek(DateTimeConstants.FRIDAY); if ((c.getMillis() + 1000) < System.currentTimeMillis()) { c = c.plusWeeks(1); } long mills = getTimeCal(c.toLocalDate(), 2).toDateTime().getMillis(); mills -= early * 60 * 1000; if (System.currentTimeMillis() < mills) { Alarm a = new Alarm(); a.city = getID(); a.cuma = true; a.early = false; a.time = mills; a.vakit = Vakit.OGLE; a.dayOffset = 0; alarms.add(a); } } return alarms; }
From source file:com.qcadoo.view.internal.components.ganttChart.GanttChartScaleImpl.java
License:Open Source License
private JSONObject getWeeksScale() throws JSONException { DateTime dateTimeFrom = new DateTime(dateFrom); DateTime dateTimeTo = new DateTime(dateTo); int dateTimeFromDayOfWeek = dateTimeFrom.getDayOfWeek(); int dateTimeToDayOfWeek = dateTimeTo.getDayOfWeek(); List<Integer> weekNumbers = new ArrayList<Integer>(); int lastAddedWeekNumber = 0; while (dateTimeFrom.compareTo(dateTimeTo) < 0) { lastAddedWeekNumber = dateTimeFrom.getWeekOfWeekyear(); weekNumbers.add(lastAddedWeekNumber); dateTimeFrom = dateTimeFrom.plusWeeks(1); }// w ww. j av a 2 s. com if (dateTimeTo.getWeekOfWeekyear() > lastAddedWeekNumber) { lastAddedWeekNumber = dateTimeTo.getWeekOfWeekyear(); weekNumbers.add(lastAddedWeekNumber); } JSONArray weeksArray = new JSONArray(); for (int i = 0; i < weekNumbers.size(); i++) { if (i == 0 && dateTimeFromDayOfWeek > 5) { weeksArray.put(weekNumbers.get(i).toString()); } else if (i == weekNumbers.size() - 1 && dateTimeToDayOfWeek < 3) { weeksArray.put(weekNumbers.get(i).toString()); } else { weeksArray.put(ganttChartComponentState.translate("week") + " " + weekNumbers.get(i)); } } JSONObject scaleObject = new JSONObject(); JSONArray weekDays = new JSONArray(); weekDays.put(ganttChartComponentState.translate("weekDay.short.monday")); weekDays.put(ganttChartComponentState.translate("weekDay.short.tuesday")); weekDays.put(ganttChartComponentState.translate("weekDay.short.wensday")); weekDays.put(ganttChartComponentState.translate("weekDay.short.thursday")); weekDays.put(ganttChartComponentState.translate("weekDay.short.friday")); weekDays.put(ganttChartComponentState.translate("weekDay.short.saturday")); weekDays.put(ganttChartComponentState.translate("weekDay.short.sunday")); scaleObject.put(JSON_ELEMENTS_IN_CATEGORY, 7); scaleObject.put("elementLabelsValues", weekDays); scaleObject.put("firstCategoryFirstElement", dateTimeFromDayOfWeek); scaleObject.put("lastCategoryLastElement", dateTimeToDayOfWeek); scaleObject.put(JSON_CATEGORIES, weeksArray); return scaleObject; }