Java プログラムに日付のリストがあります。そして、パラメーターに渡した日数を返すメソッドを作成したいと思います。
例 : 文字列 "Tue" をこのメソッドに渡します。そして、このメソッドは int 20 を返しました。 int 20 が、曜日名として火曜日を含む日付のカウントであると仮定します。
私の英語でごめんなさい。それは私の自然言語ではないので
日付をカレンダー インスタンスに変換できます。
int groupByDays(List<Date> dateList, int dayToMatch) { //dayToMatch can be defined as Calendar.TUESDAY or Calendar.MONDAY ...
int counter = 0;
for (Date date : dateList) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int day = cal.get(Calendar.DAY_OF_WEEK);
if (day == dayToMatch)
counter++;
System.out.println("Day is : "+day); //This will return the day index compare with actual value to get the DAY in string format
}
return counter;
}
Day に相当するインデックス (これは java.util.Calendar から直接選択されます):
/**
* Value of the {@link #DAY_OF_WEEK} field indicating
* Sunday.
*/
public final static int SUNDAY = 1;
/**
* Value of the {@link #DAY_OF_WEEK} field indicating
* Monday.
*/
public final static int MONDAY = 2;
/**
* Value of the {@link #DAY_OF_WEEK} field indicating
* Tuesday.
*/
public final static int TUESDAY = 3;
/**
* Value of the {@link #DAY_OF_WEEK} field indicating
* Wednesday.
*/
public final static int WEDNESDAY = 4;
/**
* Value of the {@link #DAY_OF_WEEK} field indicating
* Thursday.
*/
public final static int THURSDAY = 5;
/**
* Value of the {@link #DAY_OF_WEEK} field indicating
* Friday.
*/
public final static int FRIDAY = 6;
/**
* Value of the {@link #DAY_OF_WEEK} field indicating
* Saturday.
*/
public final static int SATURDAY = 7;
これらの情報を使用して、詳細をグループ化できます。
これはそれを行う必要があります:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
ArrayList<Date> dates = new ArrayList<Date>();
dates.add(sdf.parse("11/06/2013"));//Tuesday
dates.add(sdf.parse("15/06/2013"));//Saturday
dates.add(sdf.parse("17/06/2013"));//Monday
dates.add(sdf.parse("18/06/2013"));//Tuesday
dates.add(sdf.parse("22/06/2013"));//Saturday
dates.add(sdf.parse("25/06/2013"));//Tuesday
System.out.println(checkDay(dates , "Mon"));
System.out.println(checkDay(dates , "Tue"));
System.out.println(checkDay(dates , "Wed"));
System.out.println(checkDay(dates , "Sat"));
public int checkDay(ArrayList<Date> list, String day)
{
int count = 0;
SimpleDateFormat sdf = new SimpleDateFormat("EE");
for(Date d : list)
{
if(sdf.format(d).equals(day))
count++;
}
return count;
}
ここで動作することを確認してください:
ただし、複数回実行する予定がある場合は、一度実行してカウントをハッシュマップに保存することをお勧めします。
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
ArrayList<Date> dates = new ArrayList<Date>();
dates.add(sdf.parse("11/06/2013"));//Tuesday
dates.add(sdf.parse("15/06/2013"));//Saturday
dates.add(sdf.parse("17/06/2013"));//Monday
dates.add(sdf.parse("18/06/2013"));//Tuesday
dates.add(sdf.parse("22/06/2013"));//Saturday
dates.add(sdf.parse("25/06/2013"));//Tuesday
HashMap counts = getCounts(dates);
System.out.println(counts.get("Mon"));
System.out.println(counts.get("Tue"));
public static HashMap getCounts(ArrayList<Date> list)
{
HashMap counts = new HashMap();
SimpleDateFormat sdf = new SimpleDateFormat("EE");
for(Date d : list)
{
String form = sdf.format(d);
if(counts.containsKey(form))
counts.put(form,((int)counts.get(form))+1);
else
counts.put(form,1);
}
return counts;
}
ここでそれを参照してください: