Java 正确格式化日期

Java 正确格式化日期,java,android,string,date,Java,Android,String,Date,您好stackoverflowers,假设我有一个数据库,其中一行充满了日期,好吗 问题1: 像这个: 2013-06-01 所以我想把这个日期转换成字符串 输入: 2013年3月1日星期二00:00:00 EET 例如。。 那么,我如何将日期的输出变成这样: 2013年3月?? 这是我的密码: date = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH) .parse(mCursor.

您好
stackoverflowers
,假设我有一个数据库,其中一行充满了日期,好吗

问题1: 像这个:

2013-06-01

所以我想把这个日期转换成字符串

输入:

2013年3月1日星期二00:00:00 EET

例如。。 那么,我如何将日期的输出变成这样:

2013年3月?? 这是我的密码:

date = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH)
                            .parse(mCursor.getString(mCursor
                                    .getColumnIndex(KEY_AVAILABILITYDATE)));
                    list.add(date);
问题2(我想问题1必须先解决): 当然,我想对添加日期的列表进行排序

因此,我运行以下代码:

Collections.sort(list);
但坦率地说,它排序不正确!这是好坏参半的——都是错的

谢谢你的阅读,我希望这很容易

所有代码: 但是现在结果都混在一起了!gridview很大,我只看到:

2013年9月2013年6月2013年7月
每行。我能做什么?谢谢

您需要构建一个比较器来比较两个日期:

下面是它的代码:

public static Comparator<Date> dateComparator = new Comparator<Date>()
{
    public int compare(Date date1, Date date2)
    {
        return date1.compareTo(date2);
    }
};
这就是如何使用数组而不是集合

Date[] arrayDates = new Date[list.size()];
arrayDates = list.toArray(arrayDates);
Arrays.sort(arrayDates, dateComparator);
1) 使用
“MMM yyyy”
作为正则表达式,如下所示:

public class Main {
  public static void main(String args[]) {
    Date now = new Date();
    SimpleDateFormat format = new SimpleDateFormat("MMM yyyy", Locale.ENGLISH);
    System.out.println(format.format(now));
  }
}
>2013年9月

2) 无需将比较器与
compareTo()
配合使用,因为
Collections.sort(list)
默认情况下应按时间顺序对日期列表进行排序

最有可能的是,问题出在您没有显示的代码中的某个地方,但我不能确定,因为您没有模拟数据库,所以我无法在Eclipse中运行您的代码


来源:

因此,在持续进行了一天的
修复后,我发现问题发生在
GridViewStickyHeaders
-外部库中

问题发生在我滚动时!结果都搞砸了


谢谢你的贡献!你的帮助真的帮助了我!谢谢=)

收藏将为您完成此任务,您的列表将被排序。只需填写列表并调用最后一行。虽然代码不同,但我得到了不同的输出,但完全没有正确排序。如果使用正确的比较语句,comparator不会给出错误的结果。另一种方法是使用数组而不是集合,只是为了确定在哪里添加代码?Collections.sort(list,dateComparator);在循环的内部还是外部?在循环的外部,因为您正在传递引用,它当然会重新排列您的列表。
public static Comparator<Date> dateComparator = new Comparator<Date>()
{
    public int compare(Date date1, Date date2)
    {
        return date1.compareTo(date2);
    }
};
Collections.sort(list,dateComparator);
Date[] arrayDates = new Date[list.size()];
arrayDates = list.toArray(arrayDates);
Arrays.sort(arrayDates, dateComparator);
public class Main {
  public static void main(String args[]) {
    Date now = new Date();
    SimpleDateFormat format = new SimpleDateFormat("MMM yyyy", Locale.ENGLISH);
    System.out.println(format.format(now));
  }
}