我想求两个日期之间相差是否在一个月内,怎求?或者在客户端是否能做到?(jsp+ el + struts)
解决方案 »
- 求java正则:从一个select的SQL语句里获取表名
- 奇了,怪了,居然写入文件总是有一部乱码。关于filewriter.
- c+=26 与c=c+26有时候为什么不同????
- 第一次用weblogic,struts、jsf在上面都用不了?
- 帮个忙,看看有关RMI的这几个短语该怎么翻译?
- 求驱动!JDBC for SQL Server 7.0!
- MYSQL里的一个字段内容为乱码,请大家帮忙解决,谢谢了
- Apache Soap问题,能正确部署Service,确始终不能调用!
- 不好意思,问大家点很傻的学习java问题
- 简单问题:jdbc怎样得到存储过程的返回值?
- JAVA能写操作系统吗
- 关于eclipse 打包问题,急求好心人帮忙
然后在调用Date.getTime();方法得到毫秒数相减即可.
你这个怎么理解呢?
一个月你是按28 29 30 31 哪个算?先给你计算
String A = "20080101";
String B = "20080808";
//String A = "2008-01-01";//这种格式的也可以比较
//String B = "2008-08-08";//这种格式的也可以比较
System.out.println(A.compareTo(B));
* 计算两个日期间的天数
*
* @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 = (int) Math.abs((to.getTime() - from.getTime())
/ (24 * 60 * 60 * 1000)) + 1; return days;
}
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 enddate,
String date) throws Exception { SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
Date dt1 = sf.parse(startdate);
Date dt2 = sf.parse(enddate);
Date dt3 = sf.parse(date);
if (dt3.before(dt1) || dt3.after(dt2)) {
return false;
} return true;
} public static void main(String[] args) throws Exception { // String str = String.format("%tF % <tT", System.currentTimeMillis());
// System.out.println(str); // 日期比较
boolean b = false;
b = IsStartAndEndTime("1984-01-01", "1985-01-04", "1985-01-01 09:12:01");
if (b) {
System.out.println("在这2个日期之间 ");
} else {
System.out.println("不在 ");
} SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// sf.format(new Date());
System.out.println("------ " + sf.format(new Date())); // 求2个日期的天数
long days = 0;
long days2 = 0;
try {
days = DateDays("2008-03-21", "2008-4-01");
days2 = DateDays2(2008, 03, 21, 2008, 4, 01);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("相差的天数" + days);
System.out.println("相差的天数: " + days2); // 将日期变化成需要的格式
SimpleDateFormat st = new SimpleDateFormat("yyyy-MM-dd");
String Oneday = "";
Oneday = st.format(new Date());
System.out.println(Oneday); // 计算某个日期的前一天
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
try {
Date aDate = formatter.parse(Oneday);// 任意日期,包括当前日期
long myTime = (aDate.getTime() / 1000) + 1 * 60 * 60 * 24;// -1表示前一天,+1表示后一天,依次类推
aDate.setTime(myTime * 1000);
String strDay = formatter.format(aDate);
System.out.print(strDay);
} catch (Exception e) {
e.printStackTrace();
} } // 求2个日期的天数
public static long DateDays(String date1, String date2)
throws DataFormatException, ActivationException { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
long myTime;
Date aDate2;
Date aDate;
long myTime2;
long days = 0;
try {
aDate = formatter.parse(date1);// 任意日期,包括当前日期
myTime = (aDate.getTime() / 1000); // SimpleDateFormat formatter =new SimpleDateFormat("yyyy-MM-dd");
aDate2 = formatter.parse(date2);// 任意日期,包括当前日期
myTime2 = (aDate2.getTime() / 1000); if (myTime > myTime2) {
days = (myTime - myTime2) / (1 * 60 * 60 * 24);
} else {
days = (myTime2 - myTime) / (1 * 60 * 60 * 24);
} } catch (Exception e) {
e.printStackTrace();
} return days; } // 求2个日期的天数
public static long DateDays2(int year1, int month1, int day1, int year2,
int month2, int day2) throws DataFormatException,
ActivationException { String date1;
String date2;
date1 = year1 + "-" + month1 + "-" + day1;
date2 = year2 + "-" + month2 + "-" + day2;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
long myTime;
Date aDate;
Date aDate2;
long myTime2;
long days = 0;
try {
aDate = formatter.parse(date1);// 任意日期,包括当前日期
myTime = (aDate.getTime() / 1000); // SimpleDateFormat formatter =new SimpleDateFormat("yyyy-MM-dd");
aDate2 = formatter.parse(date2);// 任意日期,包括当前日期
myTime2 = (aDate2.getTime() / 1000); if (myTime > myTime2) {
days = (myTime - myTime2) / (1 * 60 * 60 * 24);
} else {
days = (myTime2 - myTime) / (1 * 60 * 60 * 24);
} } catch (Exception e) {
e.printStackTrace();
} return days; }}
运行结果:
在这2个日期之间
------ 2008-05-24 20:21:15
相差的天数11
相差的天数: 11
2008-05-24
2008-05-25
http://topic.csdn.net/u/20080401/16/84319adf-f1c9-4975-a8ff-a65be3076ea4.html
下载的网址为: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());
一但你使用上这个日期包,“一旦拥有,别无所求”了
2、还是 d1-d2<30天?d1.getTime()-d2.getTime()<30*24*60*60*1000
Date from = df.parse(fromDate);
Date to = df.parse(toDate);
days = (int) Math.abs((to.getTime() - from.getTime())
这是我主要说的是思路,其他的你自已去完善。
先设置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()?"一个月以内":"一个月以外");
}
}
这是我主要说的是思路,其他的你自已去完善。 先设置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()?"一个月以内":"一个月以外");}
}
根据日历的规则,为给定的日历字段添加或减去指定的时间量。
after(Object when)
判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。
boolean before(Object when)
判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前,返回判断结果。
先用Calendar.before(Object when)
真再用add(int field, int amount) 减去一个月
真Calendar.after(Object when) 表明在 假表明不在。
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();
}