Java:列出开始日期和结束日期之间的日期

时间:2015-09-05 05:28:54

标签: java list date jodatime

我正在尝试输入开始日期,结束日期,并获取其间的所有日期。我有格式,我需要它,我已准备好Joda-Time,但是...过去,我被卡住了。我已经包括了我的工作,以及不会发生的事情。

到目前为止,我有以下代码(工作):

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
DateFormat sysDate = new SimpleDateFormat("ddMMyyyy");

//Get Start Date
Date str_date = jXDatePicker1.getDate();
jXDatePicker1.setFormats(dateFormat);
String startDate = sysDate.format(jXDatePicker1.getDate());

//Get End Date
Date end_date = jXDatePicker2.getDate();
jXDatePicker2.setFormats(dateFormat);
String endDate = sysDate.format(jXDatePicker2.getDate());

这就是我正在努力实现的但却没有成功:

List<LocalDate> dates = new ArrayList<LocalDate>();
int days = Days.daysBetween(startDate, endDate).getDays();
for (int i=0; i < days; i++) {
    LocalDate d = startDate.withFieldAdded(DurationFieldType.days(), i);
    dates.add(d);
}

提前谢谢你。

2 个答案:

答案 0 :(得分:1)

我不确定int days = Days.daysBetween(startDate, endDate).getDays();是否有用,假设startDateendDate仍为String

相反,您应该使用str_dateend_date值,或许更像是......

int days = Days.daysBetween(new LocalDate(str_date), new LocalDate(end_date)).getDays();
System.out.println(days);

尝试并记住,通常&#34;格式&#34;日期/时间无关紧要,相反,您希望使用实际值(日期/时间)以及何时需要显示,然后根据需要进行格式化

通常情况下,我只是在结束日期之前保持循环,就像......

Random rnd = new Random();
LocalDate start = new LocalDate(2015, DateTimeConstants.SEPTEMBER, 1);
LocalDate end = start.plusDays(rnd.nextInt(200));

List<LocalDate> dates = new ArrayList<>(25);
dates.add(start);
while (start.isBefore(end)) {
    start = start.plusDays(1);
    dates.add(start);
}

for (LocalDate date : dates) {
    System.out.println(date);
}

这是包容性的,从开始日期到结束日期,此示例只生成从开始日期到将来随机天数的日期列表

答案 1 :(得分:0)

我最终得到了所需的结果,混合了MadProgrammer所提供的内容以及我在网上进行的一些调整。有一种更好的方法可以做到,但这对我有用:

DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
       DateFormat sysDate = new SimpleDateFormat("ddMMyyyy");

       //Get Start Date
        Date str_date = jXDatePicker1.getDate();
        jXDatePicker1.setFormats(dateFormat);
        String startDate = sysDate.format(jXDatePicker1.getDate());

        //Get End Date
        Date end_date = jXDatePicker2.getDate();
        jXDatePicker2.setFormats(dateFormat);
        String endDate = sysDate.format(jXDatePicker2.getDate());

        List<Date> dates = new ArrayList<Date>(25);
        Calendar cal = Calendar.getInstance();
        cal.setTime(str_date);
        while (cal.getTime().before(end_date)) {
            cal.add(Calendar.DATE, 1);
            dates.add(cal.getTime());
        }       

        List<String> stringDates = new ArrayList<String>(dates.size());
        for (Date mdates : dates){
            String date = sysDate.format(mdates);
            stringDates.add(String.valueOf(date));
        }

        System.out.println(stringDates);
相关问题