我想求两个日期之间相差是否在一个月内,怎求?或者在客户端是否能做到?(jsp+ el + struts)

解决方案 »

  1.   

    把2个日期都转换成毫秒值->相减->一个月有多少毫秒->
      

  2.   

    先将字符串转化为Date类型 转化方式参看:http://blog.csdn.net/caoyinghui1986/archive/2008/04/18/2303570.aspx
    然后在调用Date.getTime();方法得到毫秒数相减即可.
      

  3.   

    上面的 Date是 Date 的实例方法. 不是静态方法。
      

  4.   

    两个日期之间相差是否在一个月内?
    你这个怎么理解呢?
    一个月你是按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));
      

  5.   

    /**
     * 计算两个日期间的天数
     * 
     * @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;
    }
      

  6.   

    如果给的日期是两个字符串的形式的化,首先用一个SimpDateFormate 对象将两个字符串转化为Date形式,Date 中有个getTime()方法返回当前时间,现在我想你应该会做了吧
      

  7.   

    string 也能比较出大小,写错了吧,就算没写错也不能比较出相差是否在一个月内啊!!
      

  8.   

    给出我的代码:
    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
      

  9.   

    看看这里
    http://topic.csdn.net/u/20080401/16/84319adf-f1c9-4975-a8ff-a65be3076ea4.html
      

  10.   

    别再自己写这些方法了。给你推荐一个现成的包--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());
    一但你使用上这个日期包,“一旦拥有,别无所求”了
      

  11.   

    你这个一个月究竟是以什么标准来的呢?Date d1,d2;1、d1,d2同属于 4月份? 取得d1的年月和d2的年月相同就是一个月了
    2、还是 d1-d2<30天?d1.getTime()-d2.getTime()<30*24*60*60*1000
      

  12.   

    SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
    Date from = df.parse(fromDate);
    Date to = df.parse(toDate);
    days = (int) Math.abs((to.getTime() - from.getTime()) 
      

  13.   

       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()?"一个月以内":"一个月以外");

     }
     }
      

  14.   

      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()?"一个月以内":"一个月以外");}
    }
      

  15.   

    为什么没有人用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) 表明在 假表明不在。
      

  16.   

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