2016-09-20 7 views
-3

Dateオブジェクトに現在の日付を保存するにはどうすればよいですか? 私はこのコードを試してみましたが、それはエラーを取得しています:Date型オブジェクトに日付を格納する方法

SimpleDateFormat dtf = new SimpleDateFormat("yyyy-MM-dd"); 
Calendar cal = Calendar.getInstance(); 
Date date = new Date(); 
date=dtf.parse(dtf.format((cal.get(cal.YEAR)+""+cal.get(cal.MONTH)+""+cal.get(cal.DAY_OF_MONTH)))); 

は、私が「日付」オブジェクトで、今日のフォーマットされた日付[2016年9月20日]を保存したいです。

+3

日付にはフォーマットがありません – Jens

答えて

0
SimpleDateFormat dtf = new SimpleDateFormat("yyyy-MM-dd"); 
Calendar cal = Calendar.getInstance(); 
System.out.println(dtf.format(cal.getTime())); 
Date date=new Date(); 
date=dtf.parse(dtf.format(cal.getTime())); 
+0

このメソッドはDateオブジェクトとして日付を格納できます。 – venkey

+2

コードに説明を追加してください。 –

+0

いいえ、Calendar.getInstance()はシングルトンインスタンスを返していません。 getInstance()の使用のポイントは、どのカレンダー実装を返すか、どのように初期化するかを決定する際に、デフォルトのロケールとタイムゾーンを考慮に入れることです。 カレンダーを現在の時刻にする必要はありません。Calendar.getInstance()をもう一度呼び出すだけです。カレンダーのタイムゾーンからフォーマットを取得するために使用されたSimpleDateFormat。戻り値の型はString型になりますが、私はそれを解析するためにDate型として変更したいのです。最終的に日付オブジェクトになります。 – venkey

4

TL; DR

LocalDate.parse("2016-09-20") 

LocalDate

あなたは今java.timeクラスに取って代わら面倒な古いレガシークラスを使用します。さらに悪いことに、java.util.Dateクラスの日付時刻オブジェクトに日付のみの値を入れようとしています。

LocalDateクラスは、時間帯のない時間帯のない日付のみの値を表します。

入力文字列は、ISO 8601標準フォーマットに準拠しています。 java.timeクラスは、文字列の解析/生成にデフォルトでISO 8601形式を使用します。したがって、書式設定パターンを指定する必要はありません。

LocalDate ld = LocalDate.parse("2016-09-20") ; 

この値を表す文字列を生成するには、toStringを呼び出します。 java.timeについて

String output = ld.toString() ; // 2016-09-20 

java.timeフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは、java.util.Date,.Calendar、& java.text.SimpleDateFormatなどの面倒な古い日時クラスに取って代わります。

Joda-Timeプロジェクトは、今maintenance modeで、java.timeへの移行をアドバイスします。

Oracle Tutorialを参照して、詳細をご覧ください。そして、多くの例と説明のためにStack Overflowを検索してください。

java.time機能ThreeTen-BackportでJava 6 & 7に戻って、移植、さらにThreeTenABPAndroidに適合されているの多く(How to use…を参照)。

ThreeTen-Extraプロジェクトは、追加のクラスでjava.timeを拡張します。このプロジェクトは、将来のjava.timeへの追加の可能性を証明する土台です。ここでは、IntervalYearWeekYearQuartermoreなどの便利なクラスがあります。

関連する問題