Я новичок в Java и новичок в этом веб-мире. У меня есть требование реализовать в моем проекте назначения, как показано ниже:
Нам нужно добавить дни в дате ввода, чтобы создать дату предстоящего понедельника.
Пример 1: Если DateString = 17/02/2015 (вторник), то Дата выхода = 23/02/2015 (понедельник).
пример 2: Если DateString = 18/02/2015 (среда), то выведите Date = 23/02/2015 (понедельник).
пример 3: Если DateString = 23/02/2015 (понедельник), то выведите Date = 02/03/2015 (понедельник).
input: Выход строки строки: предстоящий понедельник для введенной строки даты
С помощью Java 8 вы можете использовать TemporalAdjusters:
public String getNextMonday(String date, DateTimeFormatter formatter) {
LocalDate startDate = LocalDate.parse(date, formatter);
LocalDate monday = startDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
return formatter.format(monday);
}
Позвонить
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
String nextMonday = getNextMonday("23/02/2015", formatter);
public static void main(String[] args) throws IOException,ParseException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter date(dd/mm/yyyy) : ");
String input = br.readLine();
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = Calendar.getInstance();
Date date = df.parse(input);
cal.setTime(date);
int toAdd = (9 -cal.get(Calendar.DAY_OF_WEEK));
cal.add(Calendar.DATE,toAdd);
System.out.println("coming monday is on: " + cal.getTime());
}
Если я исправлю вас, я думаю, что ниже код - это то, что вы ищете -
String dateString = "23/02/2015";
Calendar cal=Calendar.getInstance();
DateFormat df=new SimpleDateFormat("dd/MM/yyyy");
Date date = df.parse(dateString);
cal.setTime(date);
cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
cal.add(Calendar.DATE,7);
System.out.println(df.format(cal.getTime()));
java.time
. Если нет, можете ли вы использовать Joda Time? Оба намного лучше, чемjava.util.Date
/Calendar
.