227

カレンダーの日付を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形式が必要です。

4

9 に答える 9

364

JavaDateは、1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数のコンテナーです。

のようなものを使用するとSystem.out.println(date)、Java は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 より前

ThreeTen Backportを利用する必要があります

以下は、歴史的な目的のために維持されています(元の回答として)

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

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"

これらは実際には同じ日付ですが、異なる方法で表されています。

于 2012-09-25T04:27:57.800 に答える
21

あなたのコードは間違っています。日付を解析するポイントはなく、それを Date オブジェクトとして保持します。

カレンダーの日付オブジェクトを表示して文字列として保持する場合は、そのオブジェクトを書式設定できます。

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date date = cal.getTime();             
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");          
String inActiveDate = null;
try {
    inActiveDate = format1.format(date);
    System.out.println(inActiveDate );
} catch (ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
于 2012-09-25T04:05:05.043 に答える
6

java.util.Dateオブジェクトはカスタム形式で日付を表すことができず、代わりにを返すメソッドを使用する必要があります。SimpleDateFormat.formatstring

String myString=format1.format(date);
于 2012-09-25T04:02:21.920 に答える
2

オブジェクトを解析するにjava.util.Dateは、まず独自の形式を使用してオブジェクトを String に変換する必要があります。

inActiveDate = format1.parse(  format1.format(date)  );

しかし、あなたはここで冗長になっていると思います。

于 2012-09-25T04:02:51.117 に答える
2
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 7);
Date date = c.getTime();
SimpleDateFormat ft = new SimpleDateFormat("MM-dd-YYYY");
JOptionPane.showMessageDialog(null, ft.format(date));

これにより、日付 + 7 日が JOption ウィンドウ ペインに月、日、年の形式で表示されます。

于 2015-05-16T11:37:45.883 に答える