java字符串日期排序比较问题

Strings1="2012-4-4";Strings2="2013-3-3"我想用split("-");,然后怎么比较;第二个转为Date怎么比较?... String s1="2012-4-4";
String s2="2013-3-3"
我想用split("-");,然后怎么比较;
第二个转为Date 怎么比较?
展开
 我来答
历盆郁7
2013-08-01 · TA获得超过4277个赞
知道大有可为答主
回答量:1795
采纳率:100%
帮助的人:948万
展开全部

排序么?

import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

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

        System.out.println("字符串比较");
        test1();
        System.out.println("Date比较");
        test2();
    }

    private static void test1() {
        List<String> data = init();

        System.out.println("排序前" + data);

        Collections.sort(data, new Comparator<String>() {

            public int compare(String o1, String o2) {

                String[] arr1 = o1.split("_");
                String[] arr2 = o2.split("_");

                int comparator = toInt(arr1[0], -1) - toInt(arr2[0], -2);

                if (comparator == 0) {
                    comparator = toInt(arr1[1], -1) - toInt(arr2[1], -2);
                    if (comparator == 0) {
                        return toInt(arr1[2], -1) - toInt(arr2[2], -2);
                    }
                }
                return comparator;
            }
        });
        System.out.println("排序后" + data);
    }

    private static void test2() {
        List<String> data = init();
        System.out.println("排序前" + data);

        final Format f = new SimpleDateFormat("yyyy-MM-dd");
        Collections.sort(data, new Comparator<String>() {

            public int compare(String o1, String o2) {

                Date d1;
                Date d2;
                try {
                    d1 = (Date) f.parseObject(o1);
                    d2 = (Date) f.parseObject(o2);
                    return d1.compareTo(d2);
                } catch (Exception e) {
                    e.printStackTrace();
                }

                return 0;
            }
        });
        System.out.println("排序后" + data);
    }

    private static List<String> init() {

        List<String> data = new ArrayList<String>();
        data.add("2013-3-3");
        data.add("2012-4-4");
        return data;
    }

    private static int toInt(String str, int delVal) {
        try {
            return Integer.parseInt(str);
        } catch (Exception e) {
            return delVal;
        }
    }

}

字符串比较
排序前[2013-3-3, 2012-4-4]
排序后[2012-4-4, 2013-3-3]
Date比较
排序前[2013-3-3, 2012-4-4]
排序后[2012-4-4, 2013-3-3]

百度网友12ee0fd
2013-08-01 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:2343万
展开全部
格式一样的自己比较字符串即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-01
展开全部
SimpleDateFormat 转成Date

Date.before(Date)
Date.after(Date)

import java.util.*;
import java.text.SimpleDateFormat;
import java.text.ParseException;
public class DateCompare{
public static void main(String [] argv)throws ParseException{
String s1="2012-4-4";
String s2="2013-3-3";
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-M-d");
Date d1=fmt.parse(s1);
Date d2=fmt.parse(s2);
if(d2.after(d1)){
System.out.println(s2+">"+s1);
}else{
System.out.println(s2+"!>"+s1);
}
}
}
更多追问追答
追问
用split呢?
追答
那样太费劲了,split 。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友876eb9c
推荐于2018-03-13 · TA获得超过1513个赞
知道小有建树答主
回答量:1200
采纳率:0%
帮助的人:282万
展开全部
package com.zz;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Demo4 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1 = "2012-4-4";
String s2 = "2013-3-3";
Demo4 demo4 = new Demo4();
int result = demo4.compare(s1, s2);
System.out.println(result);
}

public int compare(String s1, String s2) {
boolean flag = false;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd",
Locale.CHINA);
try {
Date d1 = simpleDateFormat.parse(s1);
Date d2 = simpleDateFormat.parse(s2);
if (d1.getTime() > d2.getTime()) {
flag = true;
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (flag) {
return 1;
} else {
return -1;
}
}

}

ps:split就不要用了。这是在自虐。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式