如何获取android中两个日期之间的日期列表?

时间:2017-12-28 00:44:44

标签: android

我的意思是这样的:

2017年12月28日

2017年12月29日

二零一七年十二月三十〇日

2017年12月31日

2018年1月1日

2018年1月2日

等等 我搜索了互联网,我找到的最接近的是:link  我试图构建一个可以整天运行的循环,但这是无关紧要的,我把它快速地留下了。我对如何做到这一点没有任何想法。你能帮我吗?

2 个答案:

答案 0 :(得分:0)

我不确定是否有一种方法可以调用和检索您想要的日期列表,但您可以通过以下几个步骤来完成:

  1. 使用Calendar.getInstance().set()设置初始日期。
  2. 循环(开始日期 - >结束日期)并执行以下insie块:

    一个。增加日期 - Calendar.getInstance().add(DATE, 1);

    湾从日历实例中获取日期DatetimeInMillies

    ℃。使用SimpleDateFormat将其转换为您想要的格式。将此字符串添加到列表中或以任何方式使用它。

答案 1 :(得分:0)

public String datesBetween (int startDay, int startMonth, int startYear, int endDay, int endMonth, int endYear) {
    int month = startMonth;
    int day = startDay;
    int year = startYear; // start on the first day
    String returnString = ""; // start with an empty list

    while (nextDay(day, month, year, endDay, endMonth, endYear)){ // while the date is not yet the end date
        returnString += day + "-" + month + "-" + year + "\n"; // add the date to the string being returned
        }
    return returnString; // return the string
    }


public int dayMax(int month, int year) {
    switch (month) {
        case 1: case 3: case 5: case 7: case 8: case 10: case 12: {
            return 31; // these months have 31 days
            }
        case 4: case 6: case 9: case 11: {
            return 30; // these months have 30 days
            }
        case 2: {
            return 28 + ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? 1 : 0;
            // February has 28 plus an extra day if it's a leap year (divisible by 4 but not by 100, or divisible by 400)
            }
        }        
    }


public boolean nextDay(int day, int month, int year, int endDay, int endMonth, int endYear){
    day++; // adds 1 to the day
    if (day > dayMax(month, year)) {
        month++;
        day = 1; // if day too high, add 1 to month and reset day to 1
        }
    if (month > 12) {
        year++;
        month = 1; // if month too high, add 1 to year and reset month
        }
    return year < endYear || (year == endYear && month < endMonth) || (year == endYear && month == endMonth && day < endDay);
    }