List of usage examples for org.joda.time DateTime minusHours
public DateTime minusHours(int hours)
From source file:controllers.lib.Database.java
License:Open Source License
private static boolean executeCleanStatisticDay() throws Exception { // Early Date //Date checkDate = new Date(System.currentTimeMillis() - 25 * 3600 * 1000); DateTime checkDate = new DateTime(); checkDate = checkDate.minusHours(23).minusMinutes(checkDate.getMinuteOfHour()) .minusSeconds(checkDate.getSecondOfMinute()); List<StatisticDay> statisticDayList = StatisticDay.find.all(); Iterator<StatisticDay> statisticDayIterator = statisticDayList.iterator(); while (statisticDayIterator.hasNext()) { StatisticDay statisticDay = statisticDayIterator.next(); if (statisticDay.updateTime.isBefore(checkDate)) { statisticDay.delete();//from w w w . j ava2 s.c o m } } return true; }
From source file:de.ifgi.fmt.mongo.Store.java
License:Open Source License
/** * /*from w w w . jav a 2 s .com*/ * @param args */ public static void main(String[] args) { MongoDB db = MongoDB.getInstance(); db.getMongo().dropDatabase(db.getDatabase()); GeometryFactory gf = new GeometryFactory(); DateTime begin = new DateTime(); Point p = gf.createPoint(new Coordinate(52.0, 7.0)); p.setSRID(4326); User user1 = new User().setUsername("user1").setEmail("user1@fmt.de").setPassword("password1"); User user2 = new User().setUsername("user2").setEmail("user2@fmt.de").setPassword("password2"); User user3 = new User().setUsername("user3").setEmail("user3@fmt.de").setPassword("password3"); Role role1 = new Role().setCategory(Category.EASY).setTitle("Rolle 1").setDescription("Rolle 1") .setMaxCount(200).setMinCount(50).setStartPoint(p).setUsers(Utils.set(user1, user2)); Role role2 = new Role().setCategory(Category.HARD).setTitle("Rolle 2").setDescription("Rolle 2") .setMaxCount(200).setMinCount(40).setStartPoint(p).setUsers(Utils.set(user3)); Trigger t = new Trigger().setTime(begin.plusMinutes(5)); Activity activity = new Activity().setDescription("Activity 1").setTitle("Activity 1").setTrigger(t) .setSignal(new Signal().setType(Type.VIBRATION)) .addTask(role1, new Task().setDescription("Geh nach links")) .addTask(role2, new Task().setDescription("Geh nach rechts")); Flashmob f = new Flashmob().addRole(role1).setCoordinator(user2).addRole(role2).addTrigger(t) .addActivity(activity).setDescription("Was wei ich").setEnd(begin.plusHours(2)).setStart(begin) .setPublic(false).setKey("geheim").setTitle("Ein FlashMob").setLocation(p); activity.addTask(role1, new Task().setDescription("task1")); activity.addTask(role2, new Task().setDescription("task2")); Store s = new Store(); s.users().save(Utils.list(user1, user2, user3)); s.flashmobs().save(f); s.comments().save(new Comment().setText("war ganz dolle").setUser(user1).setTime(begin.minusHours(20)) .setFlashmob(f)); s.comments().save(new Comment().setText("war wirklich ganz dolle").setUser(user2) .setTime(begin.minusHours(19)).setFlashmob(f)); // ObjectId oid = f.getId(); // // // s.users().delete(user1); // // f = s.flashmobs().get(oid); // // try { // System.err.println(JSONFactory.getEncoder(Flashmob.class) // .encode(f, null).toString(4)); // } catch (JSONException e) { // e.printStackTrace(); // } }
From source file:dk.dma.ais.abnormal.analyzer.reports.RecentEventsReportJob.java
License:Open Source License
/** * The execute method is triggered by the scheduler, when the report should be generated. * * @param jobExecutionContext/*from w ww . java2 s. c om*/ * @throws JobExecutionException */ @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { LOG.debug("RecentEventsReportJob triggered"); DateTime t2 = new DateTime(); DateTime t1 = lastRun >= 0 ? new DateTime(lastRun) : t2.minusHours(24); lastRun = t2.getMillis(); Multimap<Class<? extends Event>, Event> eventsByType = getEventsByType(t1.toDate(), t2.toDate()); String reportBody = generateReportBody(t1.toDate(), t2.toDate(), eventsByType); reportMailer.send("Abnormal events", reportBody); LOG.debug("RecentEventsReportJob finished"); }
From source file:edu.illinois.cs.cogcomp.temporal.normalizer.main.timex2interval.ModifiedDate.java
License:Open Source License
/** * * @param start the start point (anchor time) of the Phrase * @param temporalPhrase//from w ww . j a va2 s .c o m * @return */ public static TimexChunk ModifiedRule(DateTime start, TemporalPhrase temporalPhrase) { String phrase = temporalPhrase.getPhrase(); phrase = phrase.trim(); // ###################################################preprocess // 1################################################ String preprocess = "\\A(" + timeofDay + "|" + modIndicator + ")\\s*(" + weekday + ")\\Z"; Pattern pattern11 = Pattern.compile(preprocess); Matcher matcher11 = pattern11.matcher(phrase); boolean matcher11Found = matcher11.find(); if (matcher11Found) { TimexChunk tc = new TimexChunk(); tc.addAttribute(TimexNames.type, TimexNames.DATE); String secondphrase = new String(); // split the Phrase into two parts // TODO: write converter to convert TIMEX3 to datepoint String firstphrase = "this" + matcher11.group(2); tc = ModifiedDate.ModifiedRule(start, new TemporalPhrase(firstphrase, temporalPhrase.getTense())); if (matcher11.group(1).contains("early") || matcher11.group(1).contains("earlier")) { tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (matcher11.group(1).contains("late") || matcher11.group(1).contains("later")) { tc.addAttribute(TimexNames.mod, TimexNames.END); } else { secondphrase = matcher11.group(1); String revertStr = firstphrase + " " + secondphrase; temporalPhrase.setPhrase(revertStr); return ModifiedDate.ModifiedRule(start, temporalPhrase); } return tc; } // ###################################################preprocess // 2################################################ String ownprocess = "\\A(" + weekday + ")\\s*(" + timeofDay + ")\\Z"; Pattern pattern2 = Pattern.compile(ownprocess); Matcher matcher2 = pattern2.matcher(phrase); boolean matcher2Found = matcher2.find(); if (matcher2Found) { // split the Phrase into two parts String firstphrase = "this" + matcher2.group(1); String secondphrase = "this" + matcher2.group(2); TimexChunk keypoint = ModifiedDate.ModifiedRule(start, new TemporalPhrase(firstphrase, temporalPhrase.getTense())); String normVal = keypoint.getAttributes().get(TimexNames.value); DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd"); DateTime starttime = fmt.parseDateTime(normVal); TimexChunk result = ModifiedDate.ModifiedRule(starttime, new TemporalPhrase(secondphrase, temporalPhrase.getTense())); return result; } //String monther = "(?:jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may?|jun(?:e)?|jul(?:y)?|aug(?:ust)?|sept(?:ember)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?|year)"; String monther = "(" + KnowledgeBase.monther + ")"; //String specialterm = "\\A(?:morning|afternoon|noon|evening|night|spring|fall|summer|winter|mon(?:day)?|tues(?:day)?|wed(?:nesday)?|thur(?:sday)?|fri(?:day)?|sat(?:urday)?|sun(?:day)?)\\Z"; String specialterm = "\\A(" + timeofDay + "|" + season + "|" + weekday + ")\\Z"; Pattern onepattern = Pattern.compile(specialterm); Matcher onematcher = onepattern.matcher(phrase); boolean onematchFound = onematcher.find(); if (onematchFound) { phrase = "this " + onematcher.group(0); } int numterm; DateMapping temp = DateMapping.getInstance(); int i; int dayweek; int year; int month = 1; int day; int flagbefore = -1; int flagafter = -1; String thisTimeOfDay = ""; int prematchDay = -1; DateTime finish; String temp1; String temp2; Interval interval; interval = new Interval(start, start); phrase = phrase.toLowerCase(); int preflag = -1; if (phrase.equals("tonight")) { phrase = "today night"; } if (phrase.contains("before")) { phrase = phrase.replaceAll("before", ""); phrase = phrase.trim(); flagbefore = 1; } if (phrase.contains("\\Aafter\\Z")) { phrase = phrase.replaceAll("after", ""); phrase = phrase.trim(); flagafter = 1; } String spepatternStr = "(" + timeofDay + "|" + season + "|" + weekday + ")\\s*(" + shiftIndicator + ")\\s*(" + dateUnit + ")"; Pattern spepattern = Pattern.compile(spepatternStr); Matcher spematcher = spepattern.matcher(phrase); boolean spematchFound = spematcher.find(); if (spematchFound) { String group1 = spematcher.group(1); String group2 = spematcher.group(2); // String group3 = spematcher.group(3); phrase = group2 + " " + group1; } String patternStr = "\\s*(" + shiftIndicator + "|" + modIndicator + "|" + specialDayTerm + ")\\s*(" + timeofDay + "|" + dateUnit + "|" + weekday + "|" + season + "|" + KnowledgeBase.monther + ")"; Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(phrase); boolean matchFound = matcher.find(); TimexChunk tc = new TimexChunk(); DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd"); DateTimeFormatter ymFmt = DateTimeFormat.forPattern("yyyy-MM"); DateTimeFormatter yFmt = DateTimeFormat.forPattern("yyyy"); if (matchFound) { for (i = 1; i <= 2; i++) { if (matcher.group(i) == null) { i--; break; } } if (i == 3) { i--; } numterm = i; if (numterm == 2) { // group(0) returns the whole detected string which matches the // pattern String origPhrase = phrase; phrase = phrase.replaceAll(matcher.group(0), ""); phrase = phrase.trim(); String prepatternStr = "(" + KnowledgeBase.monther + "|year)"; Pattern prepattern = Pattern.compile(prepatternStr); Matcher prematcher = prepattern.matcher(phrase); boolean prematchFound = prematcher.find(); if (prematchFound) { if (temp.hm.containsKey(prematcher.group(1))) { month = Integer.parseInt(temp.hm.get(prematcher.group(1))); preflag = 1; } } prepatternStr = "(\\d+)"; prepattern = Pattern.compile(prepatternStr); prematcher = prepattern.matcher(phrase); prematchFound = prematcher.find(); if (prematchFound) { int dayInt = Integer.parseInt(prematcher.group(1)); if (dayInt > 0 && dayInt < 32) { prematchDay = dayInt; preflag = 1; } } prepatternStr = "(" + weekday + ")"; prepattern = Pattern.compile(prepatternStr); prematcher = prepattern.matcher(phrase); prematchFound = prematcher.find(); if (prematchFound) { if (temp.hm.containsKey(prematcher.group(1))) { prematchDay = Integer.parseInt(temp.hm.get(prematcher.group(1))); preflag = 1; } } prepatternStr = "(" + timeofDay + ")"; prepattern = Pattern.compile(prepatternStr); prematcher = prepattern.matcher(phrase); prematchFound = prematcher.find(); if (prematchFound) { if (unitMap.containsKey(prematcher.group(1))) { thisTimeOfDay = unitMap.get(prematcher.group(1)); preflag = 1; } } else { String backPatt = "(early|earlier|begin(?:ing)?|start)"; Pattern backPa = Pattern.compile(backPatt); Matcher backmatcher = backPa.matcher(phrase); boolean backFound = backmatcher.find(); if (backFound) { // 2 means early preflag = 2; } else { String backPatter = "(late|later|end)"; Pattern backPater = Pattern.compile(backPatter); Matcher backmatch = backPater.matcher(phrase); boolean backFounder = backmatch.find(); if (backFounder) { // 3 means late preflag = 3; } } } temp1 = matcher.group(1); temp2 = matcher.group(2); if (temp1.equals("last") || temp1.equals("past") || temp1.equals("previous") || temp1.equals("yesterday")) { if (temp2.equals("year")) { finish = start.minusYears(1); year = finish.getYear(); if (preflag == 1) { if (flagbefore == 1) { finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.minusDays(1); String normVal = fmt.print(finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, normVal); tc.addAttribute(TimexNames.mod, TimexNames.BEFORE); return tc; } else if (flagafter == 1) { finish = new DateTime(year, month, 1, 0, 0, 0, 0); finish = finish.dayOfMonth().withMaximumValue(); finish = finish.minusDays(-1); String normVal = fmt.print(finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, normVal); tc.addAttribute(TimexNames.mod, TimexNames.AFTER); return tc; } finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.dayOfMonth().withMaximumValue(); String normVal = ymFmt.print(finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, normVal); return tc; } else if (preflag == 2) { tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(year)); tc.addAttribute(TimexNames.mod, TimexNames.START); return tc; } else if (preflag == 3) { tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(year)); tc.addAttribute(TimexNames.mod, TimexNames.END); return tc; } else { tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(year)); return tc; } } else if (temp2.equals("month")) { finish = start.minusMonths(1); year = finish.getYear(); month = finish.getMonthOfYear(); finish = finish.dayOfMonth().withMaximumValue(); day = finish.getDayOfMonth(); start = new DateTime(year, month, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); interval = new Interval(start, finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); if (preflag == 1) { finish = new DateTime(year, month, prematchDay, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); } else if (preflag == 2) { tc.addAttribute(TimexNames.value, fmt.print(finish)); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = new DateTime(year, month, day - 10, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); interval = new Interval(start, finish); tc.addAttribute(TimexNames.value, fmt.print(finish)); tc.addAttribute(TimexNames.mod, TimexNames.END); } return tc; } else if (temp2.equals("week")) { finish = start.minusWeeks(1); dayweek = finish.getDayOfWeek(); finish = finish.minusDays(dayweek - 1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = finish.minusDays(-6); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); interval = new Interval(start, finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); if (preflag == 1) { String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx + "-" + String.valueOf(prematchDay)); } if (preflag == 2) { finish = start.minusDays(-2); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = start.minusDays(-4); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); String weekIdx = String.valueOf(start.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx); tc.addAttribute(TimexNames.mod, TimexNames.END); } else { String weekIdx = String.valueOf(start.getWeekOfWeekyear()); tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx); } return tc; } else if (temp2.equals("weekend")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek + 1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = start.minusDays(-1); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx + "-WE"); return tc; /* TODO: I commented out these three cases for now because they don't make sense using TIMEX3 standard */ } // else if (temp2.equals("hour")) { // finish = start.minusHours(1); // interval = new Interval(finish, start); // return interval; // } // // else if (temp2.equals("minute")) { // finish = start.minusMinutes(1); // interval = new Interval(finish, start); // return interval; // } // // else if (temp2.equals("second")) { // finish = start.minusSeconds(1); // interval = new Interval(finish, start); // return interval; // } else if (temp2.equals("century")) { finish = start.minusYears(100); year = finish.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 99, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra())); return tc; } else if (temp2.equals("decade")) { finish = start.minusYears(10); year = finish.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 9, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra() * 10)); return tc; } else if (temp2.equals("mon") || temp2.equals("monday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek + 6); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("tues") || temp2.equals("tuesday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek + 5); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("wed") || temp2.equals("wednesday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek + 4); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("thur") || temp2.equals("thursday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek + 3); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("fri") || temp2.equals("friday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek + 2); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("sat") || temp2.equals("saturday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek + 1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("sun") || temp2.equals("sunday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("morning")) { finish = start.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 7, 0, 0, 0); finish = new DateTime(year, month, day, 10, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.MORNING); return tc; } else if (temp2.equals("noon")) { finish = start.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 11, 0, 0, 0); finish = new DateTime(year, month, day, 13, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.NOON); return tc; } else if (temp2.equals("afternoon")) { finish = start.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 14, 0, 0, 0); finish = new DateTime(year, month, day, 17, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.AFTERNOON); return tc; } else if (temp2.equals("evening")) { finish = start.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 18, 0, 0, 0); finish = new DateTime(year, month, day, 20, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.EVENING); return tc; } else if (temp2.equals("night")) { finish = start.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 21, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.NIGHT); return tc; } else if (temp2.equals("day")) { finish = start.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); return tc; } else if (temp2.equals("spring")) { finish = start.minusYears(1); year = finish.getYear(); start = new DateTime(year, 3, 1, 0, 0, 0, 0); finish = new DateTime(year, 5, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.SPRING); return tc; } else if (temp2.equals("summer")) { finish = start.minusYears(1); year = finish.getYear(); start = new DateTime(year, 6, 1, 0, 0, 0, 0); finish = new DateTime(year, 8, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.SUMMER); return tc; } else if (temp2.equals("fall") || temp2.equals("autumn")) { finish = start.minusYears(1); year = finish.getYear(); start = new DateTime(year, 9, 1, 0, 0, 0, 0); finish = new DateTime(year, 11, 30, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.FALL); return tc; } else if (temp2.equals("winter")) { finish = start.minusYears(2); year = finish.getYear(); start = new DateTime(year, 12, 1, 0, 0, 0, 0); finish = new DateTime(year + 1, 2, 28, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.WINTER); return tc; } // If we have (last|previous|...)(month) else { String patternStr1 = monther; Pattern pattern1 = Pattern.compile(patternStr1); Matcher matcher1 = pattern1.matcher(temp2); boolean matchFound1 = matcher1.find(); if (matchFound1) { month = Integer.parseInt(temp.hm.get(temp2)); finish = start.minusYears(1); year = finish.getYear(); finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.dayOfMonth().withMaximumValue(); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); if (preflag == 2) { finish = new DateTime(year, month, 10, 23, 59, 59, 59); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = new DateTime(year, month, 20, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.END); } return tc; } else { return null; } } } else if (temp1.equals("early") || temp1.equals("earlier")) { tc.addAttribute(TimexNames.mod, TimexNames.START); if (temp2.equals("century")) { year = start.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 20, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra())); return tc; } else if (temp2.equals("decade")) { year = start.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 2, 12, 31, 23, 59, 59, 59); //interval = new Interval(start, finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra() * 10)); return tc; } else if (temp2.equals("year")) { year = start.getYear(); start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 3, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, yFmt.print(finish)); return tc; } else if (temp2.equals("month")) { year = start.getYear(); month = start.getMonthOfYear(); finish = start.dayOfMonth().withMaximumValue(); day = finish.getDayOfMonth(); start = new DateTime(year, month, 1, 0, 0, 0, 0); finish = new DateTime(year, month, 10, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); return tc; } else if (temp2.equals("week")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 1); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = start.minusDays(-2); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx); return tc; } else { // This part only focus on "early" + "[month]" // Modified by Zhili: if the sentence is past tense, and the month mentioned is // after DCT, then subtract 1 from year String tense = temporalPhrase.getTense(); String patternStr1 = monther; Pattern pattern1 = Pattern.compile(patternStr1); Matcher matcher1 = pattern1.matcher(temp2); boolean matchFound1 = matcher1.find(); if (matchFound1) { month = Integer.parseInt(temp.hm.get(temp2)); year = start.getYear(); if (tense.equals("past") && start.getMonthOfYear() < month) { year -= 1; } else if (!tense.equals("past") && start.getMonthOfYear() > month) { year += 1; } finish = new DateTime(year, month, 10, 23, 59, 59, 59); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); return tc; } else { return null; } } } else if (temp1.equals("late") || temp1.equals("later")) { tc.addAttribute(TimexNames.mod, TimexNames.END); tc.addAttribute(TimexNames.type, TimexNames.DATE); if (temp2.equals("century")) { year = start.getCenturyOfEra(); year = year * 100; start = new DateTime(year + 80, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 99, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra())); return tc; } else if (temp2.equals("decade")) { year = start.getCenturyOfEra(); year = year * 100; start = new DateTime(year + 8, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 9, 12, 31, 23, 59, 59, 59); //interval = new Interval(start, finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra() * 10)); return tc; } else if (temp2.equals("year")) { year = start.getYear(); start = new DateTime(year, 10, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); interval = new Interval(start, finish); tc.addAttribute(TimexNames.value, yFmt.print(finish)); return tc; } else if (temp2.equals("month")) { year = start.getYear(); month = start.getMonthOfYear(); finish = start.dayOfMonth().withMaximumValue(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day - 10, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); return tc; } else { String patternStr1 = monther; Pattern pattern1 = Pattern.compile(patternStr1); Matcher matcher1 = pattern1.matcher(temp2); boolean matchFound1 = matcher1.find(); if (matchFound1) { month = Integer.parseInt(temp.hm.get(temp2)); year = start.getYear(); String tense = temporalPhrase.getTense(); if (tense.equals("past") && start.getMonthOfYear() < month) { year -= 1; } else if (!tense.equals("past") && start.getMonthOfYear() > month) { year += 1; } finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.dayOfMonth().withMaximumValue(); start = new DateTime(year, month, finish.getDayOfMonth() - 10, 0, 0, 0, 0); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); return tc; } else { return null; } } } else if (temp1.equals("this") || temp1.equals("today")) { tc.addAttribute(TimexNames.type, TimexNames.DATE); if (temp2.equals("century")) { year = start.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 99, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra())); return tc; } else if (temp2.equals("decade")) { year = start.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 9, 12, 31, 23, 59, 59, 59); //interval = new Interval(start, finish); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra() * 10)); return tc; } else if (temp2.equals("year")) { year = start.getYear(); if (preflag == 1) { finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.dayOfMonth().withMaximumValue(); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); return tc; } else if (preflag == 2) { start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 3, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish)); tc.addAttribute(TimexNames.mod, TimexNames.START); return tc; } else if (preflag == 3) { start = new DateTime(year, 10, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish)); tc.addAttribute(TimexNames.mod, TimexNames.END); return tc; } else { start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish)); return tc; } } else if (temp2.equals("month")) { year = start.getYear(); month = start.getMonthOfYear(); finish = start.dayOfMonth().withMaximumValue(); day = finish.getDayOfMonth(); start = new DateTime(year, month, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); if (preflag == 1) { finish = new DateTime(year, month, prematchDay, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); } else if (preflag == 2) { start = new DateTime(year, month, 1, 0, 0, 0, 0); finish = new DateTime(year, month, 10, 23, 59, 59, 59); tc.addAttribute(TimexNames.mod, TimexNames.START); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); } else if (preflag == 3) { start = new DateTime(year, month, day - 10, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.mod, TimexNames.END); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); } return tc; } else if (temp2.equals("week")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 1); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = start.minusDays(-6); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-W" + weekIdx); if (preflag == 1) { weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx + "-" + String.valueOf(prematchDay)); } else if (preflag == 2) { finish = start.minusDays(-2); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = start.minusDays(-4); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.END); } return tc; } else if (temp2.equals("weekend")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 6); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = start.minusDays(-1); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx + "-WE"); return tc; } else if (temp2.equals("mon") || temp2.equals("monday")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 1); day = start.getDayOfMonth(); year = start.getYear(); month = start.getMonthOfYear(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); String tense = temporalPhrase.getTense(); if (tense.equals("past") && dayweek < 1) { finish = finish.minusDays(7); } else if (!tense.equals("past") && dayweek > 1) { finish = finish.minusDays(-7); } tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("tues") || temp2.equals("tuesday")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 2); day = start.getDayOfMonth(); year = start.getYear(); month = start.getMonthOfYear(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); String tense = temporalPhrase.getTense(); if (tense.equals("past") && dayweek < 2) { finish = finish.minusDays(7); } else if (!tense.equals("past") && dayweek > 2) { finish = finish.minusDays(-7); } tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("wed") || temp2.equals("wednesday")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 3); day = start.getDayOfMonth(); year = start.getYear(); month = start.getMonthOfYear(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); String tense = temporalPhrase.getTense(); if (tense.equals("past") && dayweek < 3) { finish = finish.minusDays(7); } else if (!tense.equals("past") && dayweek > 3) { finish = finish.minusDays(-7); } tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("thur") || temp2.equals("thursday")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 4); day = start.getDayOfMonth(); year = start.getYear(); month = start.getMonthOfYear(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); String tense = temporalPhrase.getTense(); if (tense.equals("past") && dayweek < 4) { finish = finish.minusDays(7); } else if (!tense.equals("past") && dayweek > 4) { finish = finish.minusDays(-7); } tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("fri") || temp2.equals("friday")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 5); day = start.getDayOfMonth(); year = start.getYear(); month = start.getMonthOfYear(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); String tense = temporalPhrase.getTense(); if (tense.equals("past") && dayweek < 5) { finish = finish.minusDays(7); } else if (!tense.equals("past") && dayweek > 5) { finish = finish.minusDays(-7); } tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("sat") || temp2.equals("saturday")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 6); day = start.getDayOfMonth(); year = start.getYear(); month = start.getMonthOfYear(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); String tense = temporalPhrase.getTense(); if (tense.equals("past") && dayweek < 6) { finish = finish.minusDays(7); } else if (!tense.equals("past") && dayweek > 6) { finish = finish.minusDays(-7); } tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("sun") || temp2.equals("sunday")) { dayweek = start.getDayOfWeek(); start = start.minusDays(dayweek - 7); day = start.getDayOfMonth(); year = start.getYear(); month = start.getMonthOfYear(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); String tense = temporalPhrase.getTense(); if (tense.equals("past") && dayweek < 7) { finish = finish.minusDays(7); } else if (!tense.equals("past") && dayweek > 7) { finish = finish.minusDays(-7); } tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("morning")) { year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 7, 0, 0, 0); finish = new DateTime(year, month, day, 10, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.MORNING); return tc; } else if (temp2.equals("noon")) { year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 11, 0, 0, 0); finish = new DateTime(year, month, day, 13, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.NOON); return tc; } else if (temp2.equals("afternoon")) { year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 14, 0, 0, 0); finish = new DateTime(year, month, day, 17, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.AFTERNOON); return tc; } else if (temp2.equals("evening")) { year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 18, 0, 0, 0); finish = new DateTime(year, month, day, 20, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.EVENING); return tc; } else if (temp2.equals("night")) { year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 21, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.NIGHT); return tc; } else if (temp2.equals("spring")) { year = start.getYear(); start = new DateTime(year, 3, 1, 0, 0, 0, 0); finish = new DateTime(year, 5, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.SPRING); return tc; } else if (temp2.equals("summer")) { year = start.getYear(); start = new DateTime(year, 6, 1, 0, 0, 0, 0); finish = new DateTime(year, 8, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.SUMMER); return tc; } else if (temp2.equals("fall")) { year = start.getYear(); start = new DateTime(year, 9, 1, 0, 0, 0, 0); finish = new DateTime(year, 11, 30, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.FALL); return tc; } else if (temp2.equals("winter")) { finish = start.minusDays(1); year = finish.getYear(); start = new DateTime(year, 12, 1, 0, 0, 0, 0); finish = new DateTime(year + 1, 2, 28, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-" + TimexNames.WINTER); return tc; } else { String patternStr1 = monther; Pattern pattern1 = Pattern.compile(patternStr1); Matcher matcher1 = pattern1.matcher(temp2); boolean matchFound1 = matcher1.find(); if (matchFound1) { month = Integer.parseInt(temp.hm.get(temp2)); year = start.getYear(); int referenceMonth = start.getMonthOfYear(); finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.dayOfMonth().withMaximumValue(); start = new DateTime(year, month, 1, 0, 0, 0, 0); String tense = temporalPhrase.getTense(); if (tense.equals("past") && referenceMonth < month) { finish = finish.minusYears(1); } else if (!tense.equals("past") && referenceMonth > month) { finish = finish.minusYears(-1); } tc.addAttribute(TimexNames.value, ymFmt.print(finish)); if (preflag == 2) { finish = new DateTime(year, month, 10, 23, 59, 59, 59); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = new DateTime(year, month, 20, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.END); } return tc; } else { return null; } } } else if (temp1.equals("next") || temp1.equals("upcoming") || temp1.equals("following") || temp1.equals("tomorrow")) { tc.addAttribute(TimexNames.type, TimexNames.DATE); if (temp2.equals("year")) { finish = start.minusYears(-1); year = finish.getYear(); if (preflag == 1) { finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.dayOfMonth().withMaximumValue(); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); return tc; } else if (preflag == 2) { start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 3, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); tc.addAttribute(TimexNames.mod, TimexNames.START); return tc; } else if (preflag == 3) { start = new DateTime(year, 10, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); tc.addAttribute(TimexNames.mod, TimexNames.END); return tc; } else { start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, yFmt.print(finish)); return tc; } } else if (temp2.equals("month")) { finish = start.minusMonths(-1); year = finish.getYear(); month = finish.getMonthOfYear(); finish = finish.dayOfMonth().withMaximumValue(); day = finish.getDayOfMonth(); start = new DateTime(year, month, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); if (preflag == 1) { finish = new DateTime(year, month, prematchDay, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); } else if (preflag == 2) { start = new DateTime(year, month, 1, 0, 0, 0, 0); finish = new DateTime(year, month, 10, 23, 59, 59, 59); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = new DateTime(year, month, day - 10, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.mod, TimexNames.END); } return tc; } else if (temp2.equals("week")) { finish = start.minusWeeks(-1); dayweek = finish.getDayOfWeek(); finish = finish.minusDays(dayweek - 1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = start.minusDays(-6); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx); if (preflag == 1) { weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx + "-" + String.valueOf(prematchDay)); } else if (preflag == 2) { finish = start.minusDays(-2); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = start.minusDays(-4); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.END); } return tc; } else if (temp2.equals("weekend")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 13); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = start.minusDays(-1); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); String weekIdx = String.valueOf(finish.getWeekOfWeekyear()); weekIdx = weekIdx.length() == 1 ? "0" + weekIdx : weekIdx; tc.addAttribute(TimexNames.value, String.valueOf(year) + "-W" + weekIdx + "-WE"); return tc; } else if (temp2.equals("hour")) { finish = start.minusHours(-1); tc.addAttribute(TimexNames.value, TimexNames.FUTURE_REF); return tc; } else if (temp2.equals("minute")) { finish = start.minusMinutes(-1); tc.addAttribute(TimexNames.value, TimexNames.FUTURE_REF); return tc; } else if (temp2.equals("second")) { finish = start.minusSeconds(-1); tc.addAttribute(TimexNames.value, TimexNames.FUTURE_REF); return tc; } else if (temp2.equals("century")) { finish = start.minusYears(-100); year = finish.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 99, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra())); return tc; } else if (temp2.equals("decade")) { finish = start.minusYears(-10); year = finish.getCenturyOfEra(); year = year * 100; start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year + 9, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra() * 10)); return tc; } else if (temp2.equals("day")) { finish = start.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); return tc; } else if (temp2.equals("mon") || temp2.equals("monday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 8); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("tues") || temp2.equals("tuesday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 9); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("wed") || temp2.equals("wednesday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 10); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("thur") || temp2.equals("thursday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 11); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("fri") || temp2.equals("friday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 12); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("sat") || temp2.equals("saturday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 13); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("sun") || temp2.equals("sunday")) { dayweek = start.getDayOfWeek(); finish = start.minusDays(dayweek - 14); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish)); if (preflag == 1) { tc.addAttribute(TimexNames.value, tc.getAttribute(TimexNames.value) + "T" + thisTimeOfDay); } return tc; } else if (temp2.equals("morning")) { finish = start.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 7, 0, 0, 0); finish = new DateTime(year, month, day, 10, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.MORNING); return tc; } else if (temp2.equals("noon")) { finish = start.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 11, 0, 0, 0); finish = new DateTime(year, month, day, 13, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.NOON); return tc; } else if (temp2.equals("afternoon")) { finish = start.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 14, 0, 0, 0); finish = new DateTime(year, month, day, 17, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.AFTERNOON); return tc; } else if (temp2.equals("evening")) { finish = start.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 18, 0, 0, 0); finish = new DateTime(year, month, day, 20, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.EVENING); return tc; } else if (temp2.equals("night")) { finish = start.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, month, day, 21, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.TIME); tc.addAttribute(TimexNames.value, fmt.print(finish) + TimexNames.NIGHT); return tc; } else if (temp2.equals("spring")) { finish = start.minusYears(-1); year = finish.getYear(); start = new DateTime(year, 3, 1, 0, 0, 0, 0); finish = new DateTime(year, 5, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish) + "-" + TimexNames.SPRING); return tc; } else if (temp2.equals("summer")) { finish = start.minusYears(-1); year = finish.getYear(); start = new DateTime(year, 6, 1, 0, 0, 0, 0); finish = new DateTime(year, 8, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish) + "-" + TimexNames.MORNING); return tc; } else if (temp2.equals("fall")) { finish = start.minusYears(-1); year = finish.getYear(); start = new DateTime(year, 9, 1, 0, 0, 0, 0); finish = new DateTime(year, 11, 30, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish) + "-" + TimexNames.FALL); return tc; } else if (temp2.equals("winter")) { year = start.getYear(); start = new DateTime(year, 12, 1, 0, 0, 0, 0); finish = new DateTime(year + 1, 2, 28, 23, 59, 59, 59); tc.addAttribute(TimexNames.value, fmt.print(finish) + "-" + TimexNames.WINTER); return tc; } else { String patternStr1 = monther; Pattern pattern1 = Pattern.compile(patternStr1); Matcher matcher1 = pattern1.matcher(temp2); boolean matchFound1 = matcher1.find(); if (matchFound1) { month = Integer.parseInt(temp.hm.get(temp2)); finish = start.minusYears(-1); year = finish.getYear(); finish = new DateTime(year, month, 1, 23, 59, 59, 59); finish = finish.dayOfMonth().withMaximumValue(); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); if (preflag == 2) { finish = new DateTime(year, month, 10, 23, 59, 59, 59); start = new DateTime(year, month, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.START); } else if (preflag == 3) { start = new DateTime(year, month, 20, 0, 0, 0, 0); tc.addAttribute(TimexNames.mod, TimexNames.END); } return tc; } else { return null; } } } } } return null; }
From source file:edu.illinois.cs.cogcomp.temporal.normalizer.main.timex2interval.RelativeDate.java
License:Open Source License
/** * This function converts phrase that contains a relative date: more than xxx, etc * @param start anchor time/* w w w . j a v a 2 s. com*/ * @param phrase * @return */ public static TimexChunk Relativerule(DateTime start, String phrase) { int numterm; int flag_ago = 0; int i; int year; int month; int day; DateTime finish; String temp1; String temp2; String temp3; int amount; Interval interval; interval = new Interval(start, start); phrase = phrase.toLowerCase(); phrase = phrase.trim(); TimexChunk tc = new TimexChunk(); if (phrase.equals("recently") || phrase.equals("recent") || phrase.equals("past") || phrase.equals("at time") || phrase.equals("previously")) { tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, TimexNames.PAST_REF); return tc; } if (phrase.contains("future")) { tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, TimexNames.FUTURE_REF); return tc; } // Handle some special cases if (phrase.endsWith("earlier")) { phrase = phrase.replace("earlier", "ago"); phrase = phrase.trim(); } if (phrase.contains("ago")) { phrase = phrase.replaceAll("ago", ""); phrase = "last " + phrase; flag_ago = 1; } if (phrase.contains("later")) { phrase = phrase.replaceAll("later", ""); phrase = "after " + phrase; } if (phrase.contains("after")) { phrase = phrase.replaceAll("after", ""); phrase = "after " + phrase; } if (phrase.contains("more than")) { phrase = phrase.replaceAll("more than", "after"); } if (phrase.contains("less than")) { phrase = phrase.replaceAll("less than", "in"); } if (phrase.contains("last decade")) { phrase = phrase.replaceAll("last decade", "last ten years"); } if (phrase.contains("next decade")) { phrase = phrase.replaceAll("next decade", "next ten years"); } String patternStr = "\\s*(" + positionTerm + "|" + shiftIndicator + ")\\s*((?:\\d{1,4}|" + number + ")\\s*(?:" + number + ")?)\\s*(" + dateUnit + "|" + timeUnit + ")\\s*\\w*"; Pattern pattern = Pattern.compile(patternStr); Matcher matcher = pattern.matcher(phrase); boolean matchFound = matcher.find(); DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd"); DateTimeFormatter ymFmt = DateTimeFormat.forPattern("yyyy-MM"); DateTimeFormatter yFmt = DateTimeFormat.forPattern("yyyy"); if (matchFound) { for (i = 1; i <= 3; i++) { if (matcher.group(i) == null) { i--; break; } } if (i == 4) { i--; } numterm = i; if (numterm == 3) { temp1 = matcher.group(1); temp2 = matcher.group(2); temp3 = matcher.group(3); amount = Integer.parseInt(converter(temp2)); if (temp1.equals("last") || temp1.equals("past") || temp1.equals("previous") || temp1.equals("since") || temp1.equals("this") || temp1.equals("recent")) { if (flag_ago == 0) { if (temp3.equals("years") || temp3.equals("year")) { finish = start.minusYears(amount); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(start.getYear(), start.getMonthOfYear(), start.getDayOfMonth(), 0, 0, 0, 0); start = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("day") || temp3.equals("days")) { finish = start.minusDays(amount); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(start.getYear(), start.getMonthOfYear(), start.getDayOfMonth(), 0, 0, 0, 0); start = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "D"); return tc; } else if (temp3.equals("month") || temp3.equals("months")) { finish = start.minusMonths(amount); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 0, 0, 0, 0); finish = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "M"); return tc; } else if (temp3.equals("week") || temp3.equals("weeks")) { finish = start.minusWeeks(amount); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 0, 0, 0, 0); finish = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "W"); return tc; } else if (temp3.equals("decade") || temp3.equals("decades")) { finish = start.minusYears(amount * 10); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 0, 0, 0, 0); finish = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "DE"); return tc; } else if (temp3.equals("century") || temp3.equals("centuries")) { finish = start.minusYears(amount * 100); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 0, 0, 0, 0); finish = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "CE"); return tc; } else if (temp3.equals("hour") || temp3.equals("hours")) { finish = start.minusHours(amount); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "H"); return tc; } else if (temp3.equals("minute") || temp3.equals("minutes")) { finish = start.minusMinutes(amount); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "M"); return tc; } else if (temp3.equals("second") || temp3.equals("seconds")) { finish = start.minusSeconds(amount); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "S"); return tc; } } else { flag_ago = 0; if (temp3.equals("years") || temp3.equals("year")) { finish = start.minusYears(amount); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, yFmt.print(finish)); return tc; } else if (temp3.equals("day") || temp3.equals("days")) { finish = start.minusDays(amount); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 23, 59, 59, 59); start = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, fmt.print(finish)); return tc; } else if (temp3.equals("month") || temp3.equals("months")) { finish = start.minusMonths(amount); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.dayOfMonth().getMaximumValue(); start = new DateTime(year, month, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, ymFmt.print(finish)); return tc; } else if (temp3.equals("week") || temp3.equals("weeks")) { finish = start.minusWeeks(amount); start = finish.minusWeeks(amount + 1); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); finish = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 23, 59, 59, 59); start = new DateTime(year, month, day, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, yFmt.print(finish) + "-W" + String.valueOf(finish.getWeekOfWeekyear())); return tc; } else if (temp3.equals("decade") || temp3.equals("decades")) { finish = start.minusYears(amount * 10); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getYear() / 10) + "X"); return tc; } else if (temp3.equals("century") || temp3.equals("centuries")) { finish = start.minusYears(amount * 100); year = finish.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(year, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DATE); tc.addAttribute(TimexNames.value, String.valueOf(finish.getCenturyOfEra())); return tc; } else if (temp3.equals("hour") || temp3.equals("hours")) { finish = start.minusHours(amount); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), finish.getHourOfDay(), 0, 0, 0); finish = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), finish.getHourOfDay(), 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "H"); return tc; } else if (temp3.equals("minute") || temp3.equals("minutes")) { finish = start.minusMinutes(amount); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), finish.getHourOfDay(), finish.minuteOfHour().get(), 0, 0); finish = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), finish.getHourOfDay(), finish.minuteOfHour().get(), 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "M"); return tc; } } } else if (temp1.equals("in") || temp1.equals("upcoming") || temp1.equals("next") || temp1.equals("from") || temp1.equals("following") || temp1.equals("during") || temp1.equals("additional")) { if (temp3.equals("years") || temp3.equals("year")) { finish = start.minusYears((-1) * amount); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(start.getYear(), start.getMonthOfYear(), start.getDayOfMonth(), 23, 59, 59, 59); start = new DateTime(year, month, day, 23, 59, 59, 59); interval = new Interval(finish, start); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("day") || temp3.equals("days")) { finish = start.minusDays((-1) * amount); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(start.getYear(), start.getMonthOfYear(), start.getDayOfMonth(), 23, 59, 59, 59); start = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "D"); return tc; } else if (temp3.equals("month") || temp3.equals("months")) { finish = start.minusMonths((-1) * amount); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 23, 59, 59, 59); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "M"); return tc; } else if (temp3.equals("week") || temp3.equals("weeks")) { finish = start.minusWeeks((-1) * amount); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 23, 59, 59, 59); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "W"); return tc; } else if (temp3.equals("decade") || temp3.equals("decades")) { finish = start.minusYears((-1) * amount * 10); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 23, 59, 59, 59); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); amount = amount * 10; tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("century") || temp3.equals("centuries")) { finish = start.minusYears((-1) * amount * 100); year = start.getYear(); month = start.getMonthOfYear(); day = start.getDayOfMonth(); start = new DateTime(finish.getYear(), finish.getMonthOfYear(), finish.getDayOfMonth(), 23, 59, 59, 59); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); amount *= 100; tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("hour") || temp3.equals("hours")) { finish = start.minusHours((-1) * amount); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "H"); return tc; } else if (temp3.equals("minute") || temp3.equals("minutes")) { finish = start.minusMinutes((-1) * amount); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "M"); return tc; } else if (temp3.equals("second") || temp3.equals("seconds")) { finish = start.minusSeconds((-1) * amount); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "S"); return tc; } } else if (temp1.equals("before") || temp1.equals("prior to") || temp1.equals("preceding")) { if (temp3.equals("years") || temp3.equals("year")) { finish = start.minusYears(amount); finish = finish.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("day") || temp3.equals("days")) { finish = start.minusDays(amount); finish = finish.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "D"); return tc; } else if (temp3.equals("month") || temp3.equals("months")) { finish = start.minusMonths(amount); finish = finish.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "M"); return tc; } else if (temp3.equals("week") || temp3.equals("weeks")) { finish = start.minusWeeks(amount); finish = finish.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "W"); return tc; } else if (temp3.equals("decade") || temp3.equals("decades")) { finish = start.minusYears(amount * 10); finish = finish.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); amount *= 10; tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("century") || temp3.equals("centuries")) { finish = start.minusYears(amount * 100); finish = finish.minusDays(1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); finish = new DateTime(year, month, day, 23, 59, 59, 59); amount *= 100; tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("hour") || temp3.equals("hours")) { finish = start.minusHours(amount); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); //interval = new Interval(start, finish); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "H"); return tc; } else if (temp3.equals("minute") || temp3.equals("minutes")) { finish = start.minusMinutes(amount); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "M"); return tc; } else if (temp3.equals("second") || temp3.equals("seconds")) { finish = start.minusSeconds(amount); start = new DateTime(0000, 1, 1, 0, 0, 0, 0); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "S"); return tc; } } else if (temp1.equals("after") || temp1.equals("over")) { if (temp3.equals("years") || temp3.equals("year")) { finish = start.minusYears((-1) * amount); finish = finish.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 0, 0, 0, 0); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("day") || temp3.equals("days")) { finish = start.minusDays((-1) * amount); finish = finish.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 0, 0, 0, 0); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "D"); return tc; } else if (temp3.equals("month") || temp3.equals("months")) { finish = start.minusMonths((-1) * amount); finish = finish.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 0, 0, 0, 0); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "M"); return tc; } else if (temp3.equals("week") || temp3.equals("weeks")) { finish = start.minusWeeks((-1) * amount); finish = finish.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 0, 0, 0, 0); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "W"); return tc; } else if (temp3.equals("decade") || temp3.equals("decades")) { finish = start.minusYears((-1) * amount * 10); finish = finish.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 0, 0, 0, 0); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); amount *= 10; tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("century") || temp3.equals("centuries")) { finish = start.minusYears((-1) * amount * 100); finish = finish.minusDays(-1); year = finish.getYear(); month = finish.getMonthOfYear(); day = finish.getDayOfMonth(); finish = new DateTime(year, month, day, 0, 0, 0, 0); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); interval = new Interval(finish, start); amount *= 100; tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "P" + amount + "Y"); return tc; } else if (temp3.equals("hour") || temp3.equals("hours")) { finish = start.minusHours((-1) * amount); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); interval = new Interval(finish, start); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "H"); return tc; } else if (temp3.equals("minute") || temp3.equals("minutes")) { finish = start.minusMinutes((-1) * amount); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); interval = new Interval(finish, start); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "M"); return tc; } else if (temp3.equals("second") || temp3.equals("seconds")) { finish = start.minusSeconds((-1) * amount); start = new DateTime(9999, 12, 31, 23, 59, 59, 59); interval = new Interval(finish, start); tc.addAttribute(TimexNames.type, TimexNames.DURATION); tc.addAttribute(TimexNames.value, "PT" + amount + "S"); return tc; } } } } return null; }
From source file:eu.europa.ec.fisheries.uvms.common.DateUtils.java
License:Open Source License
public static DateTime nowUTCMinusHours(final DateTime now, final int hours) throws IllegalArgumentException { return now.minusHours(hours); }
From source file:eu.europa.ec.fisheries.uvms.reporting.service.mapper.ReportDateMapper.java
License:Open Source License
public ReportGetStartAndEndDateRS getReportDates(CommonFilter filter) { ReportGetStartAndEndDateRS response = new ReportGetStartAndEndDateRS(); Date startDate = null;/*from w w w . j ava 2 s . c om*/ Date endDate = null; if (filter.getPositionSelector().getSelector().equals(Selector.all)) { startDate = filter.getDateRange().getStartDate(); endDate = filter.getDateRange().getEndDate(); } else if (filter.getPositionSelector().getSelector().equals(Selector.last)) { if (filter.getPositionSelector().getPosition().equals(Position.hours)) { DateTime dateTime = new DateTime(now); dateTime = dateTime.minusHours(filter.getPositionSelector().getValue().intValue()); startDate = dateTime.toDate(); endDate = now; } else if (filter.getPositionSelector().getPosition().equals(Position.positions)) { startDate = filter.getDateRange().getStartDate(); endDate = now; } } response.setStartDate( startDate == null ? null : new SimpleDateFormat(DateUtils.DATE_TIME_UI_FORMAT).format(startDate)); response.setEndDate(new SimpleDateFormat(DateUtils.DATE_TIME_UI_FORMAT).format(endDate)); return response; }
From source file:fi.hsl.parkandride.dev.DevController.java
License:EUPL
private static Integer sineWaveUtilization(DateTime d, Integer maxCapacity) { // Peaks at 16, so we subtract 16 hours. final double x = (d.minusHours(16).getMinuteOfDay() * 2.0 * Math.PI) / (24.0 * 60.0); // 1 + cos(x) is in range 0..2 so we have to divide the max capacity by 2 final double usedSpaces = (maxCapacity / 2.0) * (1 + Math.cos(x)); return (int) (maxCapacity - usedSpaces); }
From source file:fr.ybonnel.model.ScoreWithHistory.java
License:Apache License
private void aggregateOneTypeOfScore(DateTime now, Iterator<Score> itScores) { Set<String> hoursKept = new HashSet<>(); while (itScores.hasNext()) { Score score = itScores.next();// ww w . ja va 2s . c om DateTime dateTimeOfScore = new DateTime(score.getTimeOfScore()); String hourOfScore = dateTimeOfScore.toString("yyyyMMddHH"); String hoursForPast1Day = dateTimeOfScore.withHourOfDay((dateTimeOfScore.getHourOfDay() / 4) * 4) .toString("yyyyMMddHH"); if (dateTimeOfScore.compareTo(now.minusHours(2)) < 0 && hoursKept.contains(hourOfScore) || dateTimeOfScore.compareTo(now.minusDays(1)) < 0 && hoursKept.contains(hoursForPast1Day)) { itScores.remove(); } else { hoursKept.add(hourOfScore); hoursKept.add(hoursForPast1Day); } } }
From source file:fulldatechart.FullDateChart.java
License:Open Source License
public static void main(String[] args) throws IOException, ParseException, ValidationException { if (args.length != 2) { System.out.println("Usage: .../fulldatechart.jar /path/to/myfinds.gpx <myuserid>"); System.exit(1);//from w w w. ja v a2s. c o m } File f = new File(args[0]); String ownerId = args[1]; DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'").withZoneUTC(); System.out.println("Parsing: " + f); Document document = Jsoup.parse(f, "UTF-8"); Set<Slot> dates = new HashSet<Slot>(); for (int i = 1; i <= 366; i++) { dates.add(new Slot(new DateTime().withYear(2012).withTimeAtStartOfDay().withDayOfYear(i))); } for (Element elem : document.select("groundspeak|date")) { Elements siblings = elem.siblingElements(); String type = siblings.select("groundspeak|type").text(); if ((type.equals("Found it") || type.equals("Attended")) && siblings.select("groundspeak|finder").attr("id").equals(ownerId)) { DateTime dt = fmt.parseDateTime(elem.text()); /* * This seems to be necessary to get all log dates to conform to * what's displayed on geocaching.com. Certain logs which have a * date between 0000 and 0600 should really belong to the * previous day. */ dt = dt.minusHours(6); dates.remove(new Slot(dt)); } } Calendar cal = new Calendar(); cal.getProperties().add(new ProdId("-//JesperEs/fulldatechart 1.0//EN")); cal.getProperties().add(Version.VERSION_2_0); cal.getProperties().add(CalScale.GREGORIAN); UidGenerator ug = new UidGenerator("1"); List<Slot> list = new ArrayList<Slot>(); list.addAll(dates); Collections.sort(list); for (Slot slot : list) { DateTime dt = slot.getNextOccurrence(); System.out.format("Next occurrence of empty slot: %s -> %s\n", slot, dt); VEvent event = new VEvent(new Date(dt.withHourOfDay(19).toDate()), "Cache-day"); event.getProperties().add(ug.generateUid()); cal.getComponents().add(event); } File output = new File("fulldatechart.ics"); FileOutputStream fout = new FileOutputStream(output); try { CalendarOutputter out = new CalendarOutputter(); out.output(cal, fout); System.out.println("Calendar written to " + output.getAbsolutePath()); } finally { fout.close(); } }