今日の日付で、前月の最初の日付と最後の日付を取得する必要があります。私は論理を思い付くことができません。
たとえば、を渡す05/30/2012
と、とを取得する必要が04/01/2012
あり04/30/2012
ます。
どんな助けでも大歓迎です。ありがとう。
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
cal.set(Calendar.DATE, 1);
Date firstDateOfPreviousMonth = cal.getTime();
cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DATE)); // changed calendar to cal
Date lastDateOfPreviousMonth = cal.getTime();
見る
JodaTimeを使用する
DateMidnight now = new DateMidnight();
DateMidnight beginningOfLastMonth = now.minusMonths(1).withDayOfMonth(1);
DateMidnight endOfLastMonth = now.withDayOfMonth(1).minusDays(1);
System.out.println(beginningOfLastMonth);
System.out.println(endOfLastMonth);
出力:
2012-04-01T00:00:00.000+02:00
2012-04-30T00:00:00.000+02:00
説明: DateMidnight オブジェクトは、時刻情報を持たない Date オブジェクトであり、まさに必要なもののようです。そうでない場合は、上記のコードで DateMidnight をすべて DateTime に置き換えます。
カレンダーオブジェクトを作成し、日付を現在の月の最初の日に設定することができます(最初にする必要があります:P)。その後、2つの操作を実行できます。カレンダーオブジェクトから特定の期間を差し引くことができます。月(これにより、前月の最初の日付、または前月の最後の日が得られる日が得られます。私は試していませんが、これが私の最初のステップです.
また、ジガーの答えに何かを追加したいと思います。DateFormat
クラスを使用して、質問で指定した形式で日付を取得します。
DateFormat df = DateFormat.getInstance(DateFormat.SHORT);
System.out.println(df.format(firstDateOfPreviousMonth));
System.out.println(df.format(lastDateOfPreviousMonth));
出力:
04/01/12
04/30/12
public List customizeDate(String month, int year) {
List<String> list = new ArrayList<String>();
try {
String edates = null;
String sdates = null;
if (month.equals("JAN") || month.equals("MAR") ||
month.equals("MAY") || month.equals("JUL") ||
month.equals("AUG") || month.equals("OCT") ||
month.equals("DEC")) {
String s1 = "01";
String s2 = "31";
String sdate = s1 + "-" + month + "-" + year;
System.out.println("Startdate" + sdate);
SimpleDateFormat sd = new SimpleDateFormat("dd-MMM-yyyy");
Date ed = sd.parse(sdate);
sdates = sd.format(ed);
System.out.println("ed" + ed + "------------" + sdates);
String endDate = s2 + "-" + month + "-" + year;
System.out.println("EndDate" + endDate);
SimpleDateFormat s = new SimpleDateFormat("dd-MMM-yyyy");
Date d = s.parse(endDate);
edates = s.format(d);
System.out.println("d" + d + "------------" + edates);
} else if (month.equals("APR") || month.equals("JUN") ||
month.equals("SEP") || month.equals("NOV")) {
String s3 = "01";
String s4 = "30";
String sdate = s3 + "-" + month + "-" + year;
System.out.println("Startdate" + sdate);
SimpleDateFormat sd = new SimpleDateFormat("dd-MMM-yyyy");
Date ed = sd.parse(sdate);
sdates = sd.format(ed);
System.out.println("ed" + ed + "------------" + sdates);
String endDate = s4 + "-" + month + "-" + year;
System.out.println("EndDate" + endDate);
SimpleDateFormat s = new SimpleDateFormat("dd-MMM-yyyy");
Date d = s.parse(endDate);
edates = s.format(d);
System.out.println("d" + d + "------------" + edates);
} else {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
System.out.println("Leap year");
if (month.equals("FEB")) {
String s5 = "01";
String s6 = "29";
String sdate = s5 + "-" + month + "-" + year;
System.out.println("Startdate" + sdate);
SimpleDateFormat sd =
new SimpleDateFormat("dd-MMM-yyyy");
Date ed = sd.parse(sdate);
sdates = sd.format(ed);
System.out.println("ed" + ed + "------------" +
sdates);
String endDate = s6 + "-" + month + "-" + year;
System.out.println("EndDate" + endDate);
SimpleDateFormat s =
new SimpleDateFormat("dd-MMM-yyyy");
Date d = s.parse(endDate);
edates = s.format(d);
System.out.println("d" + d + "------------" + edates);
}
} else {
System.out.println("Not a leap year");
String s7 = "01";
String s8 = "28";
String sdate = s7 + "-" + month + "-" + year;
System.out.println("Startdate" + sdate);
SimpleDateFormat sd = new SimpleDateFormat("dd-MMM-yyyy");
Date ed = sd.parse(sdate);
sdates = sd.format(ed);
System.out.println("ed" + ed + "------------" + sdates);
String endDate = s8 + "-" + month + "-" + year;
System.out.println("EndDate" + endDate);
SimpleDateFormat s = new SimpleDateFormat("dd-MMM-yyyy");
Date d = s.parse(endDate);
edates = s.format(d);
System.out.println("d" + d + "------------" + edates);
}
}
list.add(edates);
list.add(sdates);
} catch (Exception e) {
System.err.println(e.getMessage());
}
return list;
}
}
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DATE, 1);
cal.add(Calendar.DAY_OF_MONTH, -1);
Date lastDateOfPreviousMonth = cal.getTime();
cal.set(Calendar.DATE, 1);
Date firstDateOfPreviousMonth = cal.getTime();