142

次の関数は、今日の日付を生成します。昨日の日付だけを生成するにはどうすればよいですか?

private String toDate() {
        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        Date date = new Date();    
        return dateFormat.format(date).toString();
}

これは出力です:

2012-07-10

以下のような昨日の日付だけが必要です。私の機能でこれを行うことは可能ですか?

2012-07-09
4

8 に答える 8

352

アップデート

JSR-310を使用した datetime API が最近改善されました。

Instant now = Instant.now();
Instant yesterday = now.minus(1, ChronoUnit.DAYS);
System.out.println(now);
System.out.println(yesterday);

https://ideone.com/91M1eU

時代遅れの答え

あなたは間違った数を引いています:

Calendar代わりに使用してください:

private Date yesterday() {
    final Calendar cal = Calendar.getInstance();
    cal.add(Calendar.DATE, -1);
    return cal.getTime();
}

次に、メソッドを次のように変更します。

private String getYesterdayDateString() {
        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        return dateFormat.format(yesterday());
}

見る

于 2012-07-11T03:51:08.317 に答える
62

次のことができます。

private Date getMeYesterday(){
     return new Date(System.currentTimeMillis()-24*60*60*1000);
}

注: さらに遡る日付が必要な場合は、日数を 24*60*60*1000 で乗算します。例:

private Date getPreviousWeekDate(){
     return new Date(System.currentTimeMillis()-7*24*60*60*1000);
}

同様に、値を System.currentTimeMillis() に追加することで、将来の日付を取得できます。次に例を示します。

private Date getMeTomorrow(){
     return new Date(System.currentTimeMillis()+24*60*60*1000);
}
于 2014-08-31T23:00:51.767 に答える
11
   Calendar cal = Calendar.getInstance();
   DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
   System.out.println("Today's date is "+dateFormat.format(cal.getTime()));

   cal.add(Calendar.DATE, -1);
   System.out.println("Yesterday's date was "+dateFormat.format(cal.getTime()));  

CalenderApiを使用する

于 2012-07-11T04:02:35.390 に答える
9

これを試してください:

private String toDate() {
    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");

    // Create a calendar object with today date. Calendar is in java.util pakage.
    Calendar calendar = Calendar.getInstance();

    // Move calendar to yesterday
    calendar.add(Calendar.DATE, -1);

    // Get current date of calendar which point to the yesterday now
    Date yesterday = calendar.getTime();

    return dateFormat.format(yesterday).toString();
}
于 2012-07-11T04:07:23.920 に答える
7

これを試して;

   public String toDate() {
       DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
       Calendar cal = Calendar.getInstance();
       cal.add(Calendar.DATE, -1);
       return dateFormat.format(cal.getTime());
  }
于 2012-07-11T04:53:45.490 に答える
3

昨日の日付を直接取得する関数はありません。

Calendar昨日の日付を取得するには、減算して使用する必要があります-1

于 2012-07-11T03:54:21.853 に答える
2

あなたのコードから変更:

private String toDate(long timestamp) {
    Date date = new Date (timestamp * 1000 -  24 * 60 * 60 * 1000);
   return new SimpleDateFormat("yyyy-MM-dd").format(date).toString();

}

ただし、 calendarを使用するとうまくいきます。

于 2012-07-11T03:55:04.597 に答える
1
Calendar cal = Calendar.getInstance();
   DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
   System.out.println("Today's date is "+dateFormat.format(cal.getTime()));

   cal.add(Calendar.DATE, -1);
   System.out.println("Yesterday's date was "+dateFormat.format(cal.getTime())); 
于 2012-07-11T03:52:48.497 に答える