Java でカレンダーを使用せず、タイムスタンプなしで日付だけを取得するにはどうすればいいですか? [重複] 質問する

Java でカレンダーを使用せず、タイムスタンプなしで日付だけを取得するにはどうすればいいですか? [重複] 質問する

私は現在の日付を の形式で取得するメソッドを作成しましたyyyy-MM-ddが、現在の日付の前日である昨日の日付を取得する別のメソッドも作成できるようにしたいと考えています。必要なのは日付だけで、タイムスタンプは必要ありません。私はCalendar同様に使用しようとはしていません。現在の日付を次のように設定しました。

public class DateWithNoTimestamp
{
       private static final String CURRENT_DATE_FORMAT = "yyyy-MM-dd";

       public final static String getCurrentDate()
       {
               DateFormat dateFormat = new SimpleDateFormat(CURRENT_DATE_FORMAT);
               Date date = new Date();
               return dateFormat.format(date);
       } 
}

これは現在の日付を取得するのに機能しますが、別の方法で問題が発生しています。 1 日を減算する場合getYesertdayDate()と同様に設定するにはどうすればよいですか?getCurrentDate()

ベストアンサー1

1000 * 60 * 60 * 24日付からミリ秒を減算し、その値をフォーマットするだけで済みます。

Date yesterday = new Date(System.currentTimeMillis() - 1000L * 60L * 60L * 24L));

これは手っ取り早い方法であり、コメントにもあるように、夏時間への切り替え(年に2日)が発生すると機能しなくなる可能性があります。推奨される代替案は次のとおりです。カレンダーAPIジョダAPIまたは、新しい JDK 8 時間 API:

LocalDate today = LocalDate.now();
LocalDate yesterday = today.minusDays(1);

おすすめ記事