如何不考虑年月日比较时刻,另外calendar的set不起作用

desertriver 2008-07-26 10:58:51
Calendar calendar = Calendar.getInstance();
Calendar calendarWk = Calendar.getInstance();

calendar.setTime(lineWorktime.getStartTime());
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DATE);

calendar.setTimeInMillis((long)(calendar.getTimeInMillis() + time *1000));
calendarWk.setTime(worktime.getEndAm());

calendarWk.set(year, month, day);
calendarWk.set(Calendar.YEAR, year);
calendarWk.set(Calendar.MONTH, month);
calendarWk.set(Calendar.DATE, day);

if(calendar.before(calendarWk))
{
//logic
}


Calendar calendar = Calendar.getInstance();
Calendar calendarWk = Calendar.getInstance();

calendar.setTime(lineWorktime.getStartTime());
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DATE);

calendar.setTimeInMillis((long)(calendar.getTimeInMillis() + time *1000));
calendarWk.setTime(worktime.getEndAm());

calendarWk.set(year, month, day);
calendarWk.set(Calendar.YEAR, year);
calendarWk.set(Calendar.MONTH, month);
calendarWk.set(Calendar.DATE, day);

if(calendar.before(calendarWk))
{
//logic
}


主要功能是实现calendar和calendarWK比较时刻的早晚,而不考虑年、月、日。
worktime.getEndAm()是date,但由于其年月日不确定,而lineWorktime.getStartTime()的年月日是准确的
所以把calendarWk的年月日用calendar的重新设置一下,然后再比较。
现在是calendarWk的四个set函数好像没有作用,由于年月相同,看不出变化,但day的确没有变
请问是什么问题?怎么解决

另外,要实现上面的功能不考虑年月日只比较时刻的功能有其它什么好方法,麻烦讲一讲,谢谢。
(因为比较急,所以很冒昧的请java2000_net帮忙看看,十分感谢)
...全文
356 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xunyiren 2008-07-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 desertriver 的回复:]
哦,我是要比较时、分、秒的。
不过这个方法不能精确到分秒吗?
1000×3600×24不是刚好一天的时间,余数不是一天内的数据吗?为什么分秒会没有呢?
请指点,谢谢
[/Quote]

汗,是我没看清楚,如果取余再比较的话应该是可以的!致歉!
desertriver 2008-07-26
  • 打赏
  • 举报
回复
好,试试效果,谢谢
xunyiren 2008-07-26
  • 打赏
  • 举报
回复

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");

Calendar calendar = Calendar.getInstance();
Calendar calendarWk = Calendar.getInstance();

calendar.setTime(lineWorktime.getStartTime());

calendar.setTimeInMillis((long)(calendar.getTimeInMillis() + time *1000));
calendarWk.setTime(worktime.getEndAm());

String datestr1 = sdf.format(calendar.getTime());
String datestr2 = sdf.format(calendarWk.getTime());
if(sdf.parse(datestr1).before(sdf.parse(datestr2))) //同为1970-01-01,只是时间不同
{
//logic
}
desertriver 2008-07-26
  • 打赏
  • 举报
回复
对呀,
我上面也是把正确Calendar的年月日用set方式设置另外一个Calendar,
可有时候结果不会改变,晕了
请问有可能是什么原因引起的呢?
bootupnow 2008-07-26
  • 打赏
  • 举报
回复
不考虑年月日的话,可以把两者的年月日都设置成相同的,再直接取时间来比较
getTimeInMillis(),before();after();
或者是单独取小时,分钟,秒来进行比较也行。


GregorianCalendar gCalendar1 = new GregorianCalendar(2008,Calendar.JULY,26,19,20,00);
GregorianCalendar gCalendar2 = new GregorianCalendar(1987,Calendar.JULY,26,17,20,00);
gCalendar2.set(gCalendar1.get(Calendar.YEAR),
gCalendar1.get(Calendar.MONTH),
gCalendar1.get(Calendar.DAY_OF_MONTH));
String t1 = new SimpleDateFormat("HH:mm:ss").format(gCalendar1.getTime());
String t2 = new SimpleDateFormat("HH:mm:ss").format(gCalendar2.getTime());
System.out.println(t1);
System.out.println(t2);
System.out.println("t1 < t2 " + gCalendar1.before(gCalendar2));
System.out.println("t1 > t2 " + gCalendar1.after(gCalendar2));
desertriver 2008-07-26
  • 打赏
  • 举报
回复
不好意思,代码竟然复制了两遍
帖子好像也不能编辑。
desertriver 2008-07-26
  • 打赏
  • 举报
回复
哦,我是要比较时、分、秒的。
不过这个方法不能精确到分秒吗?
1000×3600×24不是刚好一天的时间,余数不是一天内的数据吗?为什么分秒会没有呢?
请指点,谢谢
xunyiren 2008-07-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 desertriver 的回复:]
引用 7 楼 java2000_net 的回复:
难道没有更简单的吗?
getTime()返回的Long是
1000*3600*24

把2个日期得到long,然后 % 上面这个数,得到的直接比较就行了。


这个思路比较巧妙,相对简单,谢谢
[/Quote]

你的“不考虑年月日比较时刻”,是只比较小时部分,还是分和秒都要比较?如果比较要精确到秒,老紫竹的这个算法是有问题的(在同一小时,不同分秒的时刻上),上面的的比较只能精确到小时部分!!!
desertriver 2008-07-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 java2000_net 的回复:]
难道没有更简单的吗?
getTime()返回的Long是
1000*3600*24

把2个日期得到long,然后 % 上面这个数,得到的直接比较就行了。
[/Quote]

这个思路比较巧妙,相对简单,谢谢
  • 打赏
  • 举报
回复
竹子换头像拉。呵呵。
老紫竹 2008-07-26
  • 打赏
  • 举报
回复
难道没有更简单的吗?
getTime()返回的Long是
1000*3600*24

把2个日期得到long,然后 % 上面这个数,得到的直接比较就行了。


62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧