Java Code Examples for java.time.LocalDateTime#withDayOfMonth()

The following examples show how to use java.time.LocalDateTime#withDayOfMonth() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ImportDateTime.java    From axelor-open-suite with GNU Affero General Public License v3.0 6 votes vote down vote up
public LocalDateTime updateDay(LocalDateTime datetime, String day) {
  if (!Strings.isNullOrEmpty(day)) {
    Matcher matcher = patternMonth.matcher(day);
    if (matcher.find()) {
      Long days = Long.parseLong(matcher.group());
      if (day.startsWith("+")) datetime = datetime.plusDays(days);
      else if (day.startsWith("-")) datetime = datetime.minusDays(days);
      else {
        if (days > datetime.toLocalDate().lengthOfMonth()) {
          days = Long.valueOf(datetime.toLocalDate().lengthOfMonth());
        }
        datetime = datetime.withDayOfMonth(days.intValue());
      }
    }
  }
  return datetime;
}
 
Example 2
Source File: Instants.java    From arcusplatform with Apache License 2.0 5 votes vote down vote up
private static LocalDateTime setDate(LocalDateTime ldt, String date) {
   String [] parts = date.split("\\-");
   ldt = ldt.withYear(Integer.parseInt(parts[0]));
   if(parts.length > 1) {
      ldt = ldt.withMonth(Integer.parseInt(parts[1]));
   }
   if(parts.length > 2) {
      ldt = ldt.withDayOfMonth(Integer.parseInt(parts[2]));
   }
   return ldt;
}
 
Example 3
Source File: Axis.java    From charts with Apache License 2.0 4 votes vote down vote up
private List<LocalDateTime> makeDatesEven(List<LocalDateTime> dates, LocalDateTime dateTime) {
    // If the dates contain more dates than just the lower and upper bounds, make the dates in between even.
    if (dates.size() > 2) {
        List<LocalDateTime> evenDates = new ArrayList<>();

        // For each interval, modify the date slightly by a few millis, to make sure they are different days.
        // This is because Axis stores each value and won't update the tick labels, if the value is already known.
        // This happens if you display days and then add a date many years in the future the tick label will still be displayed as day.
        for (int i = 0; i < dates.size(); i++) {
            dateTime = dates.get(i);
            switch (currentInterval.getInterval()) {
                case YEARS:
                    // If its not the first or last date (lower and upper bound), make the year begin with first month and let the months begin with first day.
                    if (i != 0 && i != dates.size() - 1) {
                        dateTime.withMonth(1);
                        dateTime.withDayOfMonth(1);
                    }
                    dateTime.withHour(0);
                    dateTime.withMinute(0);
                    dateTime.withSecond(0);
                    dateTime.withNano(6000000);
                    break;
                case MONTHS:
                    // If its not the first or last date (lower and upper bound), make the months begin with first day.
                    if (i != 0 && i != dates.size() - 1) {
                        dateTime.withDayOfMonth(1);
                    }
                    dateTime.withHour(0);
                    dateTime.withMinute(0);
                    dateTime.withSecond(0);
                    dateTime.withNano(5000000);
                    break;
                case WEEKS:
                    // Make weeks begin with first day of week?
                    dateTime.withHour(0);
                    dateTime.withMinute(0);
                    dateTime.withSecond(0);
                    dateTime.withNano(4000000);
                    break;
                case DAYS:
                    dateTime.withHour(0);
                    dateTime.withMinute(0);
                    dateTime.withSecond(0);
                    dateTime.withNano(3000000);
                    break;
                case HOURS:
                    if (i != 0 && i != dates.size() - 1) {
                        dateTime.withMinute(0);
                        dateTime.withSecond(0);
                    }
                    dateTime.withNano(2000000);
                    break;
                case MINUTES:
                    if (i != 0 && i != dates.size() - 1) {
                        dateTime.withSecond(0);
                    }
                    dateTime.withNano(1000000);
                    break;
                case SECONDS:
                    dateTime.withSecond(0);
                    break;

            }
            evenDates.add(dateTime);
        }

        return evenDates;
    } else {
        return dates;
    }
}