2012-05-01 25 views
2

我是使用Netbeans进行Java编程的新手。我已将jCalendar添加到我的GUI中以选择日期。挑选日期和查找差异

我已经进入活动这条线 - jCalendar按钮>“属性更改”的代码,

Date date=jcalendar1.getDate(); 

所以,我得到立即当它被更改的日期。我对吗?

目的: 我想找到从上述日期的下午(中午12点)到NOW(当前日期和时间)的差值(以毫秒为单位)。 有几个程序显示日期差异,但所有日期硬编码和新手,我不知道如何将它取代的日期。 (还有我对日期和日历对象感到困惑,不能理解它们之间的区别)。例如,从这里一片:

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对象?我怎样才能将这个或其他任何东西用于我的程序。一块带有详细注释的代码将更有帮助 谢谢!

回答

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(); 
} 
+0

感谢,我必须从GUI中取出日期,我可以使用calendar.getInstance();为此而不是Date date = jcalendar1.getDate();正如我的问题所述。 –

+0

jcalendar API -http://www.toedter.com/en/jcalendar/api/com/toedter/calendar/JCalendar.html - 表示将从getDate()方法返回java.util.Date对象。 java.util.Date上的getTime()方法以毫秒为单位给出了该日期的表示形式。在我的响应中使用该代码来获取GUI和今天中午之间的差异。 – PaddyC

+0

对不起,我在这里没有太多评论,我打了一个快速输入,但我的评论上面回答你的问题? – PaddyC