采摘日期并发现差异

时间:2012-05-01 08:32:24

标签: java netbeans jcalendar date-difference

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

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

Date date=jcalendar1.getDate(); 

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

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

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();

这一天是Date对象。如何将cal(日历对象)链接到它以输入时间。如何首先定义cal对象?我如何在您的计划中使用此或其他任何内容。一段带有详细注释的代码会更有帮助 谢谢!

1 个答案:

答案 0 :(得分: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();
}