2

我是使用 Netbeans 进行 Java 编程的新手。我已将 jCalendar 添加到我的 GUI 以选择日期。

我已经在事件 - > jCalendar 按钮的“属性更改”代码中输入了这一行,

Date date=jcalendar1.getDate(); 

这样我就可以在更改日期时立即获得日期。我对吗?

目的:我想找出从上面这个日期的下午(12:00 pm)到现在(当前日期和时间)的毫秒差。有几个程序显示日期差异,但都有硬编码的日期,作为新手,我不知道如何用选择的日期替换它。(我也对对象日期和日历感到困惑,无法理解它们之间的区别)。例如,这里的一个片段:

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 回答