java两个日期之间的比较之差?

hideer 2008-05-18 04:07:59
我想求两个日期之间相差是否在一个月内,怎求?

或者在客户端是否能做到?(jsp+ el + struts)
...全文
6740 32 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobor_2008 2008-06-01
  • 打赏
  • 举报
回复
你可以改成自己需要的就OK了.
bobor_2008 2008-06-01
  • 打赏
  • 举报
回复
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
try {
long from=sdf.parse("2008-06-01").getTime();
long to=sdf.parse("2008-06-03").getTime();
long days=(to-from)/(1000*60*60*24);
System.out.println(days);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jason_kou 2008-05-31
  • 打赏
  • 举报
回复
不过贴出来的答案中20楼是最简单的,顶一下
jason_kou 2008-05-31
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 mayuanfei 的回复:]
别再自己写这些方法了。给你推荐一个现成的包--Joda Time。 网站是:http://joda-time.sourceforge.net/。
下载的网址为:http://sourceforge.net/project/showfiles.php?group_id=97367&package_id=104212
目前最新的版本是1.5.2
下载完之后你可以很Easy的这么写:

DateTime date1 = new DateTime("2008-4-27");
DateTime date2 = new DateTime("2008-5-1");
Days days = Days.daysBetween(date1, date2);
System.out.…
[/Quote]
这个最简单

[Quote=引用 23 楼 i_saw_you 的回复:]
为什么没有人用java.util.Calendar类呢 ?void add(int field, int amount)
根据日历的规则,为给定的日历字段添加或减去指定的时间量。
after(Object when)
判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。
boolean before(Object when)
判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前,返回判断结果。
先用Calendar.before(Object when)
真再用add(int field, int amount) …
[/Quote]
这个最直接
hideer 2008-05-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 irvine007 的回复:]
/**
* 计算两个日期间的天数
*
* @param fromDate
* 起始日期
* @param toDate
* 结束日期
* @return
* @throws ParseException
*/
public static int dateDiff(String fromDate, String toDate)
throws ParseException {
int days = 0;

SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
Date from = df.parse(fromDate);
Date to = df.parse(toDate);
days =…
[/Quote]

为什么最后要+1 ?
KKK2007 2008-05-30
  • 打赏
  • 举报
回复
stevexk 2008-05-30
  • 打赏
  • 举报
回复
转换成ms,然后除一个月的时间长度,大于1就是之外,小于1是之内。
i_saw_you 2008-05-30
  • 打赏
  • 举报
回复
客户端就得用js脚本,这个我不是很懂。
i_saw_you 2008-05-30
  • 打赏
  • 举报
回复
为什么没有人用java.util.Calendar类呢 ?void add(int field, int amount)
根据日历的规则,为给定的日历字段添加或减去指定的时间量。
after(Object when)
判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。
boolean before(Object when)
判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前,返回判断结果。
先用Calendar.before(Object when)
真再用add(int field, int amount) 减去一个月
真Calendar.after(Object when) 表明在 假表明不在。
steven_sk 2008-05-30
  • 打赏
  • 举报
回复
学习了.
伟大的左前卫 2008-05-30
  • 打赏
  • 举报
回复
无语,有这么复杂?
screen321 2008-05-30
  • 打赏
  • 举报
回复
beginDate 和 endDate 是否相差一个月以内?
这是我主要说的是思路,其他的你自已去完善。

先设置beginDate。改变他的月份,让他的月份加1(让他往后加一个月)
然后再叛断beginDate >= endDate = true 就说明两者相差一个月以内。

import java.util.Date;

public class Test {
public static void main (String args[]) {

Date begin = new Date(2007,1,27);
Date end = new Date(2007,2,28);

if (begin.getTime() > end.getTime()){
Date temp;
temp = begin;
begin =end;
end = temp;
}

begin.setMonth(begin.getMonth()+1);

System.out.println(begin.getTime() >= end.getTime()?"一个月以内":"一个月以外");

}
}
screen321 2008-05-30
  • 打赏
  • 举报
回复
beginDate 和 endDate 是否相差一个月以内?假设beginDate > endDate。
这是我主要说的是思路,其他的你自已去完善。


先设置beginDate。改变他的月份,让他的月份加1(让他往后加一个月)
然后再叛断beginDate >= endDate = true 就说明两者相差一个月以内。

import java.util.Date;

public class Test {
public static void main (String args[]) {

Date begin = new Date(2007,1,27);
Date end = new Date(2007,2,28);

if (begin.getTime() > end.getTime()){
Date temp;
temp = begin;
begin =end;
end = temp;
}

begin.setMonth(begin.getMonth()+1);

System.out.println(begin.getTime() >= end.getTime()?"一个月以内":"一个月以外");

}
}
night__cat 2008-05-28
  • 打赏
  • 举报
回复
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
Date from = df.parse(fromDate);
Date to = df.parse(toDate);
days = (int) Math.abs((to.getTime() - from.getTime())
justforjoy 2008-05-27
  • 打赏
  • 举报
回复
有这么复杂吗?
liangdongwei12 2008-05-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yuzhu2008 的回复:]
给出我的代码:


Java code








package com.sytdc.cxl;

import java.rmi.activation.ActivationException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.zip.DataFormatException;

public class datetest {

/**
* @param args
*/

public static boolean IsStartAndEndTime(String startdate, String enddat…
[/Quote]
太强了,顶一个!!!
pigengler 2008-05-27
  • 打赏
  • 举报
回复
你这个一个月究竟是以什么标准来的呢?

Date d1,d2;

1、d1,d2同属于 4月份?

取得d1的年月和d2的年月相同就是一个月了


2、还是 d1-d2<30天?

d1.getTime()-d2.getTime()<30*24*60*60*1000
胡矣 2008-05-27
  • 打赏
  • 举报
回复
对 你这个一个月究竟是以什么标准来的呢?有点笼统啊
mayuanfei 2008-05-27
  • 打赏
  • 举报
回复
别再自己写这些方法了。给你推荐一个现成的包--Joda Time。 网站是:http://joda-time.sourceforge.net/。
下载的网址为:http://sourceforge.net/project/showfiles.php?group_id=97367&package_id=104212
目前最新的版本是1.5.2
下载完之后你可以很Easy的这么写:

DateTime date1 = new DateTime("2008-4-27");
DateTime date2 = new DateTime("2008-5-1");
Days days = Days.daysBetween(date1, date2);
System.out.println(days.getDays());
一但你使用上这个日期包,“一旦拥有,别无所求”了
tmy309 2008-05-27
  • 打赏
  • 举报
回复
看看这里
http://topic.csdn.net/u/20080401/16/84319adf-f1c9-4975-a8ff-a65be3076ea4.html
加载更多回复(11)

62,634

社区成员

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

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