yyyyMMdd格式的日期字符串比较String s1 = "20070301";
String s2 = "20071123";if (s1.compareTo(s2) < 1) {
  // 日期 s1 小于 s2,这样判断可行吗?
}

解决方案 »

  1.   

    不行必须!
    转成Calendar才能使用compareTo()方法比较
      

  2.   


    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;public class Test {
    public static void main(String[] arg) { String s1 = "20070301";
    String s2 = "20071123"; SimpleDateFormat simpleDateFormatter = new SimpleDateFormat("yyyyMMdd");
    Date strDate1 = null, strDate2 = null;
    try {
    strDate1 = simpleDateFormatter.parse(s1);
    strDate2 = simpleDateFormatter.parse(s2);
    }
    catch (ParseException e) {
    e.printStackTrace();
    }
    System.out.println(strDate1.compareTo(strDate2));
    }
    }
    /*
    -1
    */
      

  3.   

    也可以把上面的strDate用long time1=strDate1.getTime();long time2=strDate2.getTime();//自1970年1月1日起到这个日期的毫秒数.把得到的数time1和time2减一下就可以判断了.
      

  4.   

    楼上几位说的当然对,可以转化成Calendar使用compareTo()方法比较;
    但是下面的代码也是对的啊,String类可以比较两个字符串的: String str1 = "20071011";
    String str2 = "20071013";

    System.out.println(str1.compareTo(str2));这段代码的输出是个负数;如果相等,输出为0,如果str1大于str2,输出是个正数,所以楼主的代码if (s1.compareTo(s2) < 1) {
      // 日期 s1 小于 s2,这样判断可行吗?
    }改为if (s1.compareTo(s2) < 0) {
      // 日期 s1 小于 s2,这样判断可行吗?
    }
      

  5.   

    楼上几位说的对,先转换成StringBuffer后再处理
      

  6.   


    public class Test {
    /**
     *  如果d1>d2返回true,反之false
     * @param d1
     * @param d2
     * @return
     */
    public static boolean dateComp(String d1, String d2) {
    int date1 = Integer.parseInt(d1);
    int date2 = Integer.parseInt(d2);
    return (date1 - date2) > 0;
    } public static void main(String[] args) {
    String s1 = "20070301";
    String s2 = "20071123";
    if (dateComp(s1, s2)) {
    System.out.println(s1 + " 大于 " + s2);
    } else
    System.out.println(s1 + " 小于 " + s2);
    }}