2012年12月1日(土)00:00:00 GMT 2012
上記の日付を以下の形式に変換する必要があります
2012-12-01
どうやって?
私は次の方法で試しましたが、動作しません
public Date ConvertDate(Date date){
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String s = df.format(date);
String result = s;
try {
date=df.parse(result);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
}
これを使って。
Java.util.Date date = new Date("Sat Dec 01 00:00:00 GMT 2012");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String format = formatter.format(date);
System.out.println(format);
出力は次のようになります
2012-12-01
[〜#〜] update [〜#〜]ここでの私の答えは時代遅れです。 Joda-Timeプロジェクトはメンテナンスモードになり、Java.timeクラスへの移行を推奨しています。 Ole V.V.による回答 の最新のソリューションを参照してください。
NidhishKrishnan によって受け入れられた答えは正しいです。
楽しみのために、ここに Joda-Time 2.3の同じ種類のコードがあります。
// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;
Java.util.Date date = new Date(); // A Date object coming from other code.
// Pass the Java.util.Date object to constructor of Joda-Time DateTime object.
DateTimeZone kolkataTimeZone = DateTimeZone.forID( "Asia/Kolkata" );
DateTime dateTimeInKolkata = new DateTime( date, kolkataTimeZone );
DateTimeFormatter formatter = DateTimeFormat.forPattern( "yyyy-MM-dd");
System.out.println( "dateTimeInKolkata formatted for date: " + formatter.print( dateTimeInKolkata ) );
System.out.println( "dateTimeInKolkata formatted for ISO 8601: " + dateTimeInKolkata );
実行すると…
dateTimeInKolkata formatted for date: 2013-12-17
dateTimeInKolkata formatted for ISO 8601: 2013-12-17T14:56:46.658+05:30
String s;
Format formatter;
Date date = new Date();
// 2012-12-01
formatter = new SimpleDateFormat("yyyy-MM-dd");
s = formatter.format(date);
System.out.println(s);
Date
自体をフォーマットすることはできません。 String
でのみフォーマットされた結果を取得できます。他の人が述べたようにSimpleDateFormat
を使用します。
さらに、ほとんどのgetter methods in Date
はdeprecated.
最新の答え:Java.time
のLocalDate
、最新のJava日時API、およびそのtoString
メソッドを使用します。
LocalDate date = LocalDate.of(2012, Month.DECEMBER, 1); // get from somewhere
String formattedDate = date.toString();
System.out.println(formattedDate);
これは印刷します
2012-12-01
日付(話しているのはJava.util.Date
かJava.time.LocalDate
か)にはフォーマットはありません。取得できるのは、何らかの形式を生成するtoString
メソッドだけです。toString
メソッドは変更できません。幸いなことに、LocalDate.toString
は要求された形式を正確に生成します。
Date
クラスは古くなっており、使用しようとしたSimpleDateFormat
クラスは面倒です。これらのクラスを忘れて、代わりにJava.time
を使用することをお勧めします。最新のAPIは、非常に優れた機能を備えています。
ただし、変更できない、または今変更したくないレガシーAPIからDate
を取得する場合があります。あなたがそれでできる最善のことは、それをJava.time.Instant
に変換し、そこからさらなる操作を行うことです:
Date oldfashoinedDate = // get from somewhere
LocalDate date = oldfashoinedDate.toInstant()
.atZone(ZoneId.of("Asia/Beirut"))
.toLocalDate();
アジア/ベイルートでなかった場合は、希望のタイムゾーンに置き換えてください。その後、上記のように進みます。
リンク:Oracleチュートリアル:日時 、Java.time
の使用方法の説明。