无法按周排序

时间:2015-06-17 05:02:50

标签: java date

我正在尝试根据工作日对某些数据进行排序。我面临的问题是,我得到以下输出: - 周四,周五,周六,周日,周一,周二,周三

虽然我在期待 星期日,星期一,星期二,星期三......

以下是我正在使用的代码

public class DateComperator implements Comparator<Map<String,String>> {

    public String sortingView;
    public String sortType;

    public DateComperator(String sortingView,String sortType){
        this.sortingView=sortingView;
        this.sortType=sortType;
    }

    @Override
    public int compare(
        Map<String,String> o1, Map<String,String> o2) {
         Date date1 = null,date2 = null;

          String[] formats = {
              "MMM-yyyy",   "MMM-yyyy",

                "MM-dd-yyyy",     "MM-dd-yyyy",
                "MMM-d-yyyy",     "MMM-d-yyyy",
                "MM/dd/yyyy", "MM/dd/yyyy",
                "MMM/d/yyyy", "MMM/d/yyyy",
                "MMM-yy",   "MMM-yy",
                "MMMM",     "MMMM",
                "EEEE",     "EEEE",
                "yyyy",        "yyyy",
          };
         String format="";
for (String parse : formats) {
                SimpleDateFormat sdf = new SimpleDateFormat(parse);
        try {
                    sdf.parse(o1.get(sortingView).replaceAll(" ",""));
                    format=parse;
//                    System.out.println("Printing the value of " + parse);
                    break;
                } catch (ParseException e) {

                }
            }
 SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            if(sortingView.equalsIgnoreCase("month")){
             date1 = sdf
                    .parse(o1.get(sortingView).replaceAll(" ",""));
            date2 = sdf
                    .parse(o2.get(sortingView).replaceAll(" ",""));
            }else{
            date1 = sdf
                    .parse(o1.get(sortingView).replaceAll(" ",""));
            date2 = sdf
                    .parse(o2.get(sortingView).replaceAll(" ",""));
        }

        } catch (ParseException ex) {
            Logger.getLogger(DateComperator.class.getName()).log(Level.SEVERE, null, ex);
        }

        int i=date1.compareTo(date2);
        if(sortType.equalsIgnoreCase("desc")){
            return -i;
        }else{
            return i;
        }
    }
}

由于使用EEEE格式解析日期对象的值,可能会发生这种情况。并且它使用一些默认日期,例如星期一05月1日00:00:00 IST 1970,并且依此类推。我对此很新。 任何帮助将不胜感激提前感谢。

0 个答案:

没有答案