如何使用Java获取输入的日期字符串的特定即将到来的工作日

时间:2015-03-05 06:47:21

标签: java date calendar

我是Java的初学者,也是这个网络世界的新手。我需要在我的作业项目中实现如下:

我们需要在输入日期中添加天数,以便创建即将到来的星期一的日期。

示例1:如果DateString = 17/02/2015(星期二),则输出日期= 23/02/2015(星期一)。

示例2:如果DateString = 18/02/2015(星期三),则输出日期= 23/02/2015(星期一)。

示例3:如果DateString = 23/02/2015(星期一),则输出Date = 02/03/2015(星期一)。

输入:日期字符串 输出:即将到来的星期一输入日期字符串

3 个答案:

答案 0 :(得分:0)

如果我纠错了,我想以下代码就是你要找的 -

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()));

答案 1 :(得分:0)

 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());
        }

答案 2 :(得分:0)

使用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);