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

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

或者在客户端是否能做到?(jsp+ el + struts)
...全文
6731 32 打赏 收藏 转发到动态 举报
写回复
用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)
课程内容:本课程是《Java工程师必学系列课程》的第6部分,主要讲解Java语言中中新旧两代日期时间相关的类、日期时间相关的处理方法、历法和时间计算的常识,在课程的最后还安排了万年历实战项目本课程涉及的主要内容可以分为四部分:一、Java语言旧日期时间系统二、Java8新日期时间系统三、日期、时间、历法基础知识四、万年历项目课程说明:在开发Java程序的过程中,无论做什么类型的项目,基本上都会处理与日期和时间相关的问题。既然日期时间问题的处理已经成了程序必须要掌握的技能,那我们就必须认真深入的学习日期时间的计算和处理方法。本课程将深入讲解Java语言新旧两代日期时间系统的相关知识。在讲解的过程中,不仅仅讲解如何调用各种类所提供的方法去处理相关问题,更是从原理上深入分析了这些类的设计原理,以及要如何避免在实战中踩到那些非常隐蔽的大坑。此外,除了讲解日期时间相关工具类的使用,本课程还向广大学员普及了一些必要的日期、时间和历法的相关知识。让学员能够从根本上理解日期时间算法的设计思路。同时,本课程在最后一部分,安排了非常精彩的、完整的万年历项目,通过实战的形式切实帮助学员提高解决具体问题的能力!预期效果:认真学习完本课程,学员可以掌握日期时间计算和处理的相关知识,并能提高实际的编码水平。配套福利:万年历软件的完整源码环境配置要求:学习本课程需安装JDK13或更高版本的JDK,以便程序能正确运行,建议使用IntelliJ IDEA 2019.1.2或更高版本的开发工具。因有合作协议约束,《穆哥学堂》只提供PDF版本的课件!

62,614

社区成员

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

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