private void applyModifiers(Calendar result) { forceConversion(result); applyDateModifiers(result); applyTimeModifiers(result); }
private void parseStartModifier() throws ParseException { tokenizer.nextToken(); expectKeyword(join(of(), day(), week(), month(), year())); if (in(of())) { tokenizer.nextToken(); expectKeyword(join(day(), week(), month(), year())); } if (in(day())) { startOfDay = true; } if (in(week())) { startOfWeek = true; } if (in(month())) { startOfMonth = true; } if (in(year())) { startOfYear = true; } }
private void applyDelta(Calendar fixPoint, int amount) throws ParseException { expectKeyword(join(seconds(), minutes(), hours(), days(), weeks(), months(), years())); if (in(seconds())) { fixPoint.add(Calendar.SECOND, amount); return; } if (in(minutes())) { fixPoint.add(Calendar.MINUTE, amount); return; } if (in(hours())) { fixPoint.add(Calendar.HOUR, amount); return; } if (in(days())) { fixPoint.add(Calendar.DAY_OF_MONTH, amount); return; } if (in(weeks())) { fixPoint.add(Calendar.WEEK_OF_YEAR, amount); return; } if (in(months())) { fixPoint.add(Calendar.MONTH, amount); return; } if (in(years())) { fixPoint.add(Calendar.YEAR, amount); } }
private Calendar parseFixPoint() throws ParseException { if (tokenizer.getType() == Tokenizer.NUMBER) { return parseDate(tokenizer); } if (tokenizer.getType() == Tokenizer.SPECIAL) { return now(); } if (tokenizer.getType() == Tokenizer.END_OF_INPUT) { return now(); } if (in(calendarWeek())) { tokenizer.nextToken(); expectNumber(); Calendar result = now(); result.set(Calendar.WEEK_OF_YEAR, Integer.parseInt(tokenizer.getToken())); forceConversion(result); tokenizer.nextToken(); return result; } expectKeyword(nowToken()); tokenizer.nextToken(); return now(); }
private Calendar parseEnglishDate(int month) throws ParseException { tokenizer.nextToken(); expectNumber(); int day = Integer.parseInt(tokenizer.getToken()); tokenizer.nextToken(); int year = now().get(Calendar.YEAR); if (in(ENGLISH_DATE_SEPARATOR)) { tokenizer.nextToken(); if (tokenizer.getType() == Tokenizer.NUMBER) { year = Integer.parseInt(tokenizer.getToken()); year = fixYear(year); tokenizer.nextToken(); } } if (tokenizer.getType() == Tokenizer.NUMBER) { return parseTime(buildCalendar(day, month, year)); } return buildCalendar(day, month, year); }
input = eliminateTextInBrackets(input); tokenizer = new Tokenizer(input.toLowerCase()); parseModifiers(); if ((tokenizer.getType() == Tokenizer.SPECIAL) && in(MODIFIER_END)) { tokenizer.nextToken(); Calendar result = parseFixPoint(); parseDeltas(result); applyModifiers(result); return new DateSelection(result, input);
private void parseDelta(Calendar fixPoint, Tokenizer tokenizer) throws ParseException { int amount = parseDeltaAmount(tokenizer); tokenizer.nextToken(); if (tokenizer.getType() == Tokenizer.END_OF_INPUT) { fixPoint.add(Calendar.DAY_OF_MONTH, amount); return; } applyDelta(fixPoint, amount); }
if (LocalDate.class.equals(clazz)) { try { AdvancedDateParser parser = new AdvancedDateParser(lang); return (V) LocalDate.from(parser.parse(value).getTemporal()); } catch (ParseException e) { throw new IllegalArgumentException(e.getMessage(), e); AdvancedDateParser parser = new AdvancedDateParser(lang); return (V) LocalDateTime.from(parser.parse(value).getTemporal()); } catch (ParseException e) { throw new IllegalArgumentException(e.getMessage(), e); AdvancedDateParser parser = new AdvancedDateParser(lang); return (V) ZonedDateTime.from(parser.parse(value).getTemporal()); } catch (ParseException e) { throw new IllegalArgumentException(e.getMessage(), e); AdvancedDateParser parser = new AdvancedDateParser(lang); return (V) parser.parse(value); } catch (ParseException e) { throw new IllegalArgumentException(e.getMessage(), e);
private Calendar parseGermanDate(int day) throws ParseException { tokenizer.nextToken(); expectNumber(); int month = Integer.parseInt(tokenizer.getToken()); tokenizer.nextToken(); int year = now().get(Calendar.YEAR); if (in(GERMAN_DATE_SEPARATOR)) { tokenizer.nextToken(); if (tokenizer.getType() == Tokenizer.NUMBER) { year = Integer.parseInt(tokenizer.getToken()); year = fixYear(year); tokenizer.nextToken(); } } if (tokenizer.getType() == Tokenizer.NUMBER) { return parseTime(buildCalendar(day, month, year)); } return buildCalendar(day, month, year); }
private void parseEndModifier() throws ParseException { tokenizer.nextToken(); expectKeyword(join(of(), day(), week(), month(), year())); if (in(of())) { tokenizer.nextToken(); expectKeyword(join(day(), week(), month(), year())); } if (in(day())) { endOfDay = true; } if (in(week())) { endOfWeek = true; } if (in(month())) { endOfMonth = true; } if (in(year())) { endOfYear = true; } }