2

私は Netbeans を使用した Java プログラミングの初心者です。日付を選択するために、jCalendar を GUI に追加しました。

jCalendar ボタンの Events -> "property change" コードにこの行を入力しました。

Date date=jcalendar1.getDate(); 

日付が変更されたときにすぐに日付を取得できるようにします。私は正しいですか?

目的: 上記の日付の午後 (12:00 pm) から NOW (現在の日付と時刻) までのミリ秒単位の差を見つけたい。日付の違いを示すプログラムがいくつかありますが、すべて日付がハードコードされており、初心者であるため、選択した日付に置き換える方法がわかりません。(また、オブジェクト Date と Calendar の間で混乱しており、それらの違いを理解できません)。たとえば、ここからの作品:

http://www.java2s.com/Code/Java/Data-type/ReturnsaDatesetjusttoNoontotheclosestpossiblemillisecondoftheday.htm

if (day == null) day = new Date();
  cal.setTime(day);
  cal.set(Calendar.HOUR_OF_DAY, 12);
  cal.set(Calendar.MINUTE,      cal.getMinimum(Calendar.MINUTE));
  cal.set(Calendar.SECOND,      cal.getMinimum(Calendar.SECOND));
  cal.set(Calendar.MILLISECOND, cal.getMinimum(Calendar.MILLISECOND));
  return cal.getTime();

ここで day は Date オブジェクトです。cal(カレンダーオブジェクト)がどのようにリンクされて時間を入力するか。cal オブジェクトを最初にどのように定義する必要がありますか? 私のプログラムであなたの意見でこれまたは他の何かをどのように使用できますか. 詳細なコメントを含むコードは、より役に立ちます。

4

1 に答える 1

0

使用する代わりに:

Date day = new Date();

使用する:

Calendar cal = Calendar.getInstance();
cal.set (...);
Date date = new Date(cal.getTimeInMillis());

次のようなものを使用して、このようなものをDateUtilsクラスなどに抽象化する価値があります。

public static Date create(int year, int month, int day, int hour, int minute, int second) {
    return new Date(getTimeInMillis(year, month, day, hour, minute, second));
}

public static long getTimeInMillis(int year, int month, int day, int hour, int minute, int second, int milliseconds) {
    Calendar cal = Calendar.getInstance();

    cal.clear();
    cal.set(year, month, day, hour, minute, second);
    cal.set(Calendar.MILLISECOND, milliseconds);

    return cal.getTimeInMillis();
}
于 2012-05-01T08:42:34.613 に答える