2

先月の開始日を計算したいのですが。私はこの投稿を参照し、スニペットを次のように作成しました。

Calendar calendar = getCalendar(new Date());
calendar.set(Calendar.DAY_OF_MONTH-1,
        calendar.getActualMinimum(DAY_OF_MONTH));
calendar = getTimeToBeginningOfDay(calendar);

return calendar.getTime();

これにより、先月末までの日付を取得することができます。どんな助けでも開始日を取得するのを手伝っていただければ幸いです。

4

3 に答える 3

1

などのフィールド定数に対して数学を実行しないでくださいCalendar.DAY_OF_MONTH。あなたがしたいことは:

Calendar calendar = getCalendar(new Date());
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar = getTimeToBeginningOfDay(calendar);

return calendar.getTime();
于 2012-09-13T01:57:25.247 に答える
1

前月の初日だけが必要な場合は、これで十分です。

    Calendar instance = Calendar.getInstance();
    instance.add(Calendar.MONTH, -1);
    instance.set(Calendar.DAY_OF_MONTH, 1);

    System.out.println(instance.getTime());

時間コンポーネントをクリアする必要がある場合は、getTimeToBeginningOfDay()これを達成するために投稿に記載されているを使用してください。

于 2012-09-13T01:57:33.903 に答える
1

あなたはあなたが期待するものを得るかもしれません:

Calendar c = Calendar.getInstance();

// substract one month
c.add(Calendar.MONTH, -1);

// get to the lowest day of that month
c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));

// lowest possible time in that day
c.set(Calendar.HOUR_OF_DAY, c.getActualMinimum(Calendar.HOUR_OF_DAY));
c.set(Calendar.MINUTE, c.getActualMinimum(Calendar.MINUTE));
c.set(Calendar.SECOND, c.getActualMinimum(Calendar.SECOND));
于 2012-09-13T01:55:46.557 に答える