gpt4 book ai didi

java - 如何获取某个月份的所有日期

转载 作者:行者123 更新时间:2023-12-02 12:13:46 25 4
gpt4 key购买 nike

当我使用这些代码时,我会获取我们所在月份的日期。例如,我可以看到从 01/09/201721/09/2017 之间的日期.

private void createRandomData(InMemoryCursor cursor) {
List<Object[]> data = new ArrayList<>();
Calendar today = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
today.set(Calendar.HOUR_OF_DAY,0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);

mStart = (Calendar) today.clone();
mStart.set(Calendar.DAY_OF_MONTH, 1);
while (mStart.compareTo(today) <= 0) {
data.add(createItem(mStart.getTimeInMillis()));
mStart.add(Calendar.DAY_OF_MONTH, 1);
}
cursor.addAll(data);
}

但是,我需要特定月份的日期。我如何查看其他月份的其他日期?例如,我想查看四月的日期。它应该不是九月。(我知道它与today.clone()相关,但是我不明白如何更改它)。

我计划在 Android studio 中用对话框分隔月份,当我选择任何月份时,我应该会看到该月的所有日期。

我只需要一个月的日期来执行此操作,例如四月。如何获取四月的日期? (如果我得到四月的日期,我可以在所有月份都这样做)

编辑一些变化和结果:

private void createRandomData(InMemoryCursor cursor) {
List<Object[]> data = new ArrayList<>();
Calendar today = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
today.set(Calendar.HOUR_OF_DAY,0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);

mStart = (Calendar) today.clone();
mStart.set(Calendar.MONTH, Calendar.APRIL);
mStart.set(Calendar.DAY_OF_MONTH, 1);
data.add(createItem(mStart.getTimeInMillis()));
cursor.addAll(data);
}

我只得到01/04/2017

private void createRandomData(InMemoryCursor cursor) {
List<Object[]> data = new ArrayList<>();
Calendar today = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
today.set(Calendar.HOUR_OF_DAY,0);
today.set(Calendar.MINUTE, 0);
today.set(Calendar.SECOND, 0);
today.set(Calendar.MILLISECOND, 0);

mStart = (Calendar) today.clone();
mStart.set(Calendar.MONTH, Calendar.APRIL);
int daysInMonth = today.getActualMaximum(Calendar.DAY_OF_MONTH);
for(int i=0; i<daysInMonth; i++ ){
mStart.set(Calendar.DAY_OF_MONTH, i);}
data.add(createItem(mStart.getTimeInMillis()));
cursor.addAll(data);
}

我只得到 29/04/2017 并且如果我将 mStart.set(Calendar.DAY_OF_MONTH, i) 更改为 mStart.set(Calendar.DAY_OF_MONTH , 1) 结果是 01/04/2017

最佳答案

要获取特定月份的所有日期,请将日历设置为该月的日期,例如第 1 种,向 Calendar 询问该月的日期数,然后获取日期。

您也可以只获取月份更改之前的日期,但下面的代码会询问该月的天数,以展示如何做到这一点。

此代码仅打印日期。您当然可以用它们做任何您想做的事。

public static void printDatesInMonth(int year, int month) {
SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(year, month - 1, 1);
int daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int i = 0; i < daysInMonth; i++) {
System.out.println(fmt.format(cal.getTime()));
cal.add(Calendar.DAY_OF_MONTH, 1);
}
}

测试

printDatesInMonth(2017, 2);

输出

01/02/2017
02/02/2017
03/02/2017
04/02/2017
05/02/2017
06/02/2017
07/02/2017
08/02/2017
09/02/2017
10/02/2017
11/02/2017
12/02/2017
13/02/2017
14/02/2017
15/02/2017
16/02/2017
17/02/2017
18/02/2017
19/02/2017
20/02/2017
21/02/2017
22/02/2017
23/02/2017
24/02/2017
25/02/2017
26/02/2017
27/02/2017
28/02/2017

关于java - 如何获取某个月份的所有日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46346190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com