我的意思是这样的:
2017年12月28日
2017年12月29日
二零一七年十二月三十〇日
2017年12月31日
2018年1月1日
2018年1月2日
等等 我搜索了互联网,我找到的最接近的是:link 我试图构建一个可以整天运行的循环,但这是无关紧要的,我把它快速地留下了。我对如何做到这一点没有任何想法。你能帮我吗?
答案 0 :(得分:0)
我不确定是否有一种方法可以调用和检索您想要的日期列表,但您可以通过以下几个步骤来完成:
Calendar.getInstance().set()
设置初始日期。循环(开始日期 - >结束日期)并执行以下insie块:
一个。增加日期 - Calendar.getInstance().add(DATE, 1);
湾从日历实例中获取日期Date
或timeInMillies
℃。使用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);
}