15

Javaにはこれを行うための組み込みの方法があると思います。

日付が与えられた場合、その日付の 1 日前の日付を特定するにはどうすればよいですか?

たとえば、2009 年 3 月 1 日が与えられたとします。前の日付は 2009 年 2 月 28 日です。2008 年 3 月 1 日が与えられていた場合、以前の日付は 2008 年 2 月 29 日でした。

4

7 に答える 7

47

カレンダー インターフェイスを使用します。

Calendar cal = Calendar.getInstance();
cal.setTime(myDate);
cal.add(Calendar.DAY_OF_YEAR,-1);
Date oneDayBefore= cal.getTime();

このように「加算」を行うと、有効な日付が得られることが保証されます。これはその年の 1 日にも有効です。たとえばmyDate、2012 年 1 月 1 日であればoneDayBefore、2011 年 12 月 31 日になります。

于 2009-04-13T21:18:05.900 に答える
4

java.util.Calendar クラスを使用すると、日付に任意の日数、週数、月数などを加算または減算できます。add() メソッドを使用するだけです。

http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html

例:

Calendar date = new GregorianCalendar(2009, 3, 1);
date.add(Calendar.DATE, -1);
于 2009-04-13T21:21:29.777 に答える
1

date4jライブラリを使用:

DateTime yesterday = today.minusDays(1);
于 2011-02-13T02:04:24.937 に答える
1

これは役に立ちます。

getPreviousDateForGivenDate("2015-01-19", 10);
getPreviousDateForGivenDate("2015-01-19", -10);

public static String getPreviousDateForGivenDate(String givenDate, int datesPriorOrAfter) {
    String saleDate = getPreviousDate(datesPriorOrAfter);

    try {
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String[] arr = givenDate.split("-", 3);
        Calendar cal = new GregorianCalendar(Integer.parseInt(arr[0]), Integer.parseInt(arr[1])-1, Integer.parseInt(arr[2]));
        cal.add(Calendar.DAY_OF_YEAR, datesPriorOrAfter);    
        saleDate = dateFormat.format(cal.getTime());

    } catch (Exception e) {
        System.out.println("Error at getPreviousDateForGivenDate():"+e.getMessage());
    }

    return saleDate;
}
于 2015-03-21T02:20:06.783 に答える