有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中查找两个给定日期之间的所有月份名称

我需要两个给定日期之间的所有月/年名称。我只需要把这个放在java上

例如:

Input Date:

    date 1- 20/12/2011 
    date 2- 22/08/2012

Now ,my expected result should be :- 

        Dec/2011
        Jan/2012
        Feb/2012
        Mar/2012
        Apr/2012
        May/2012
        Jun/2012
        Jul/2012
        Aug/2012

有人能帮我吗。提前谢谢


共 (6) 个答案

  1. # 1 楼答案

    使用Joda时间(因为没有指定,我假设你至少可以看看Joda时间是什么):

     LocalDate date1 = new LocalDate("2011-12-12");
     LocalDate date2 = new LocalDate("2012-11-11"); 
     while(date1.isBefore(date2)){
         System.out.println(date1.toString("MMM/yyyy"));
         date1 = date1.plus(Period.months(1));
     }
    
  2. # 2 楼答案

    java.time.YearMonth

    虽然其他答案在书写时都是好答案,但现在已经过时了。自从Java 8引入YearMonth类以来,这个任务已经大大简化:

        String date1 = "20/12/2011";
        String date2 = "22/08/2012";
    
        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/uuuu", Locale.ROOT);
        DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("MMM/uuuu", Locale.ROOT);
        YearMonth endMonth = YearMonth.parse(date2, dateFormatter);
        for (YearMonth month = YearMonth.parse(date1, dateFormatter);
                ! month.isAfter(endMonth);
                month = month.plusMonths(1)) {
            System.out.println(month.format(monthFormatter));
        }
    

    这张照片是:

    Dec/2011
    Jan/2012
    Feb/2012
    Mar/2012
    Apr/2012
    May/2012
    Jun/2012
    Jul/2012
    Aug/2012
    

    请为第二次调用DateTimeFormatter.ofPattern()提供适当的区域设置,以获取您语言中的月份名称。第一个电话也是出于安全考虑

  3. # 3 楼答案

    您只需使用the Calendar class并通过在每次迭代using myCalendar.add(Calendar.MONTH, 1);时添加一个月,从一个日期迭代到另一个日期

    Calendar类负责避免溢出,并为您更新其他字段(这里是年份)

  4. # 4 楼答案

    假设你有这两个约会。通过迭代一个while循环,直到fromDate is before toDate,可以很容易地进行比较

    Date fromDate= new Date("1/4/2016");
    Date toDate = new Date("31/12/2016");
    
    int i=0;
    while(fromDate.before(toDate)){
        i=i+1;
        fromDate.setMonth(i);
        System.out.println(fromDate);
    }
    

    你们可以在列表中添加日期,或者做任何你们想做的事

  5. # 5 楼答案

    根据上面的对话。使用日历和add方法

    我没有测试过这个,但它就在那里:

    public static List<Date> datesBetween(Date d1, Date d2) {
        List<Date> ret = new ArrayList<Date>();
        Calendar c = Calendar.getInstance();
        c.setTime(d1);
        while (c.getTimeInMillis()<d2.getTime()) {
            c.add(Calendar.MONTH, 1);
            ret.add(c.getTime());
        }
        return ret;
    }
    
  6. # 6 楼答案

    做这个

     Calendar cal = Calendar.getInstance();
     cal.setTime(your_date_object);
     cal.add(Calendar.MONTH, 1);