2012-03-18 4 views
1

iは奇妙な結果を取得しています次のように一緒に印刷してください。あいまいな結果の日付のjava

System.out.println(d+" - "+m+" - "+y+" - "+d); 

と私は得る:

1 - 18 - 2012 - Thu Jan 02 00:00:00 CET 1908 

あなたはなぜ私を説明することができますか?推奨されないメソッドDate(day,mouth,year)用ですか? はいの場合、そのパラメータを使用して2つの日付を比較するにはどうすればよいですか?

+2

'日付d =新しい日付(D、M、Y);'?いいえ、私はそうは思わない。 – skaffman

答えて

2

それから私は、新しいオブジェクトの日付を作成します。

Date d = new Date(d,m,y); 

コンストラクタの引数の順序は何も、yearmonthdateではありません。 the documentationから

Date(int year, int month, int day)


どのように私は、そのパラメータを使用して2つの日付を比較することができますか?

あなたは2つのDate Sを比較する方法に依存します。どちらが最初に来るのかを把握したい場合は、Date.beforeDate.afterを使用できます。

しかし、あなたが指摘したように、Dateクラスはであり、これは非推奨のです。このようにし

Date d = g.getTime(); 

、あなたはありません:あなたはこれを行う、GregorianCalendarから新しいDateオブジェクトを取得する必要がある場合

+0

ありがとう!これは私のエラーだった:) – JackTurky

1

、代わりにCalendarクラスを使用します(またはより良いまだ、Joda Time library)廃止されたメソッドを使用すると、結果は期待どおりのものになります。また、現在の日付を取得する必要がある場合は、単にnew Date()と書いてください。GregorianCalendarは必要ありません。

日付の比較の限り、DatecompareTo(),after()およびbefore()のメソッドを使用できます。再び、GregorianCalendarの必要はありません。

0

カレンダーを作成し、Dateオブジェクトを使用して時刻を設定すると、必要な情報を取得できます。

例:

Calendar cal = Calendar.getInstance(); 
cal.setTime(new Date()); 
int day = cal.get(Calendar.DAY_OF_MONTH); 
// and so on.... 
+0

あなたのロケールがグレゴリオ暦を使用している場合、Calendar.getInstance()はGregorianCalendarインスタンスを返します。あなたがわからない場合は、単にCalendar cal = new GregorianCalendar();を実行します。新しいGregorianCalendar(年、月、日)を作成してから、CalendarのメソッドgetTime()を呼び出してDateオブジェクトを取得することもできます。 – Renato

関連する問題