1

私は奇妙な結果を取得しています:

まず、次を使用して現在の日付を取得しますGregorianCalendar

GregorianCalendar g = new GregorianCalendar();
int m = g.get(Calendar.DAY_OF_MONTH);
int d = g.get(Calendar.DAY_OF_WEEK);
int y = g.get(Calendar.YEAR);

次に、新しいオブジェクトを作成しますDate

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

次に、次のように一緒に印刷します。

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

そして私は得る:

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

理由を説明してもらえますか?非推奨のメソッド用Date(day,mouth,year)ですか?はいの場合、そのパラメーターを使用して2つの日付を比較するにはどうすればよいですか?

4

3 に答える 3

2

次に、新しいオブジェクトDateを作成します。

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

yearコンストラクターへの引数の順序は、、、、他monthdateはありません。

ドキュメントから:

Date(int year, int month, int day)


そのパラメータを使用して2つの日付を比較するにはどうすればよいですか?

2つのをどのように比較するかによって異なりますDate。どちらが先に来るかを知りたい場合は、とを使用できDate.beforeますDate.after

ただし、お気づきのとおり、このDateクラスは非推奨ですCalendar代わりにクラスを使用してください(または、さらに良いことに、Joda Timeライブラリ

于 2012-03-18T22:22:15.423 に答える
1

Dateから新しいオブジェクトを取得する必要がある場合は、次のGregorianCalendarようにします。

Date d = g.getTime();

このようにして、非推奨のメソッドを使用する必要がなくなり、期待どおりの結果が得られます。また、現在の日付を取得する必要がある場合は、単にと書いてください。。はnew Date()必要ありませんGregorianCalendar

日付の比較に関する限り、Date's compareTo()after()およびbefore()メソッドを使用できます。繰り返しますが、の必要はありませんGregorianCalendar

于 2012-03-18T22:23:30.353 に答える
0

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

例:

Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
int day = cal.get(Calendar.DAY_OF_MONTH);
// and so on....
于 2012-03-18T22:25:57.793 に答える