如何从给定范围加载日期数组?
How to load array of dates from a given range?
我正在寻找在我的 recyclerview 中填充日期范围的最佳方式。为了阐明,我想获取从当前日期到接下来的 7 天的所有日期,就像今天是 29-07-2020 我想列出从 29-07-2020 到 04-07-2020 的所有日期。现在在我的回收站中,我想获取日期和月份名称。我尝试了下面的代码,它按照我的意愿列出了日期,但我不确定如何单独获取日期和月份。
List<String> dateList = new ArrayList<String>();
Calendar calendar = Calendar.getInstance();
for (int i=0; i<31; i++) {
calendar.add(Calendar.DATE, 1);
SimpleDateFormat curFormater = new SimpleDateFormat("EEEE, MMMM dd, yyyy");
dateList.add(curFormater.format(calendar.getTime()));
Log.i("Date" + i , dateList.get(i));
}
您可能应该考虑 https://developer.android.com/reference/java/util/Calendar#get(int) 并获得这样的月份:
calendar.get(Calendar.MONTH)
或像这样的一个月中的某天:
calendar.get(Calendar.DAY_OF_MONTH)
通过更改您传递给 SimpleDateFormat
的字符串来编辑日期格式。
要仅显示日期和月份,您可以尝试:
SimpleDateFormat curFormater = new SimpleDateFormat("dd MMMM");
更多关于格式化日期的信息here
我建议您从过时的旧版 date-time API 切换到 modern date-time API。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
LocalDate today = LocalDate.now();// Same as LocalDate.now(ZoneId.systemDefault());
// I suggest you use the following variant and apply the required time-zone
// LocalDate today=LocalDate.now(ZoneId.of("Etc/UTC"));
List<String> dateList = new ArrayList<String>();
// Define the format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE, MMMM");
// Iterate 7-times starting today with date incrementing by 1 after each iteration
for (LocalDate date = today; date.isBefore(today.plusDays(7)); date = date.plusDays(1)) {
dateList.add(date.format(formatter));
}
// Display the content of dateList
dateList.forEach(System.out::println);
}
}
输出:
Monday, August
Tuesday, August
Wednesday, August
Thursday, August
Friday, August
Saturday, August
Sunday, August
如果您的 Android 版本与 Java-8 不兼容,您可以使用 ThreeTen-Backport. You may also need .
向后移植
但是,如果您想坚持遗留 date-time API,请按以下步骤操作:
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class Main {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
List<String> dateList = new ArrayList<>();
// Define the format for only day-name and month-name
SimpleDateFormat curFormater = new SimpleDateFormat("EEEE, MMMM");
// Iterate 7-times starting today with date incrementing by 1 after each iteration
for (int i = 1; i <= 7; i++) {
dateList.add(curFormater.format(calendar.getTime()));
calendar.add(Calendar.DATE, 1);
}
// Display the content of dateList
dateList.forEach(System.out::println);
}
}
输出:
Monday, August
Tuesday, August
Wednesday, August
Thursday, August
Friday, August
Saturday, August
Sunday, August
我正在寻找在我的 recyclerview 中填充日期范围的最佳方式。为了阐明,我想获取从当前日期到接下来的 7 天的所有日期,就像今天是 29-07-2020 我想列出从 29-07-2020 到 04-07-2020 的所有日期。现在在我的回收站中,我想获取日期和月份名称。我尝试了下面的代码,它按照我的意愿列出了日期,但我不确定如何单独获取日期和月份。
List<String> dateList = new ArrayList<String>();
Calendar calendar = Calendar.getInstance();
for (int i=0; i<31; i++) {
calendar.add(Calendar.DATE, 1);
SimpleDateFormat curFormater = new SimpleDateFormat("EEEE, MMMM dd, yyyy");
dateList.add(curFormater.format(calendar.getTime()));
Log.i("Date" + i , dateList.get(i));
}
您可能应该考虑 https://developer.android.com/reference/java/util/Calendar#get(int) 并获得这样的月份:
calendar.get(Calendar.MONTH)
或像这样的一个月中的某天:
calendar.get(Calendar.DAY_OF_MONTH)
通过更改您传递给 SimpleDateFormat
的字符串来编辑日期格式。
要仅显示日期和月份,您可以尝试:
SimpleDateFormat curFormater = new SimpleDateFormat("dd MMMM");
更多关于格式化日期的信息here
我建议您从过时的旧版 date-time API 切换到 modern date-time API。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
LocalDate today = LocalDate.now();// Same as LocalDate.now(ZoneId.systemDefault());
// I suggest you use the following variant and apply the required time-zone
// LocalDate today=LocalDate.now(ZoneId.of("Etc/UTC"));
List<String> dateList = new ArrayList<String>();
// Define the format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEEE, MMMM");
// Iterate 7-times starting today with date incrementing by 1 after each iteration
for (LocalDate date = today; date.isBefore(today.plusDays(7)); date = date.plusDays(1)) {
dateList.add(date.format(formatter));
}
// Display the content of dateList
dateList.forEach(System.out::println);
}
}
输出:
Monday, August
Tuesday, August
Wednesday, August
Thursday, August
Friday, August
Saturday, August
Sunday, August
如果您的 Android 版本与 Java-8 不兼容,您可以使用 ThreeTen-Backport. You may also need
但是,如果您想坚持遗留 date-time API,请按以下步骤操作:
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class Main {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
List<String> dateList = new ArrayList<>();
// Define the format for only day-name and month-name
SimpleDateFormat curFormater = new SimpleDateFormat("EEEE, MMMM");
// Iterate 7-times starting today with date incrementing by 1 after each iteration
for (int i = 1; i <= 7; i++) {
dateList.add(curFormater.format(calendar.getTime()));
calendar.add(Calendar.DATE, 1);
}
// Display the content of dateList
dateList.forEach(System.out::println);
}
}
输出:
Monday, August
Tuesday, August
Wednesday, August
Thursday, August
Friday, August
Saturday, August
Sunday, August