1. ホーム
  2. java

[解決済み] java でカレンダーの日付を yyyy-MM-dd 形式に変換する。

2022-03-02 07:06:35

質問

カレンダーの日付はどのように yyyy-MM-dd の形式を使用します。

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date date = cal.getTime();             
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
String date1 = format1.format(date);            
Date inActiveDate = null;
try {
    inActiveDate = format1.parse(date1);
} catch (ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

これは inActiveDate = Wed Sep 26 00:00:00 IST 2012 . しかし、私が必要とするのは 2012-09-26 . 私の目的は、Hibernateの基準を使用して、この日付とデータベースの別の日付を比較することです。ですから、私は yyyy-MM-dd の形式を使用します。

解決方法は?

Java Date は、1970年1月1日00:00:00 GMTからのミリ秒数を表すコンテナである。

のようなものを使用する場合 System.out.println(date) を使用します。 Date.toString() を表示させることができます。

これを変更する唯一の方法は、オーバーライドすることです。 Date を実装し、独自の Date.toString() . IDEを立ち上げてこれを試す前に、私は止めます。問題を複雑にするだけです。使いたい(あるいは表示したい)フォーマットに合わせて日付をフォーマットする方がよいでしょう。

Java 8+

LocalDateTime ldt = LocalDateTime.now().plusDays(1);
DateTimeFormatter formmat1 = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ENGLISH);
System.out.println(ldt);
// Output "2018-05-12T17:21:53.658"

String formatter = formmat1.format(ldt);
System.out.println(formatter);
// 2018-05-12

Java 8 より前のバージョン

を利用する必要があります。 スリーテン・バックポート

以下は、歴史的な目的のために(オリジナルの回答として)維持されています。

できることは、日付をフォーマットすることです。

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(cal.getTime());
// Output "Wed Sep 26 14:23:28 EST 2012"

String formatted = format1.format(cal.getTime());
System.out.println(formatted);
// Output "2012-09-26"

System.out.println(format1.parse(formatted));
// Output "Wed Sep 26 00:00:00 EST 2012"

これらは、実は同じ日付で、表現方法が異なります。