java– 正确格式化日期

java– 正确格式化日期,第1张

概述你好stackoverflowers,让我说我有一个数据库,里面有一排日期,好吗?问题1:像这个:2013年6月1日所以我想把这个日期翻译成String输入:TueMar0100:00:00EET2013举个例子.. 那么我怎么能像这样转动日期的输出:2013年3月??这是我的代码:date=newSimpleDateFormat("yyyy-M

你好stackoverflowers,让我说我有一个数据库,里面有一排日期,好吗?

问题1:

像这个 :

2013年6月1日

所以我想把这个日期翻译成String

输入:

Tue Mar 01 00:00:00 EET 2013

举个例子..
 那么我怎么能像这样转动日期的输出:

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

但坦率地说它没有正确排序!它是混合的 – 约会所有错误.

感谢阅读,我希望这很容易!

所有代码:

public ArrayList<Date> GetValues() {ArrayList<Date> List = new ArrayList<Date>();        Date date;if (mCursor.movetoFirst()) {            while (mCursor.isAfterLast() == false) {                try {                    date = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGliSH)                            .parse(mCursor.getString(mCursor                                    .getColumnIndex(KEY_AVAILABIliTYDATE)));                    List.add(date);                } catch (ParseException e) {                    // Todo auto-generated catch block                    e.printstacktrace();                }                mCursor.movetoNext();            }        }        Collections.sort(List);        return List;    }

在失去一些希望之后我决定向你展示所有代码:

代码:

    Database DbHelper = new Database(                    this.getSherlockActivity()).open();            ArrayList<Date> headers = DbHelper.GetValues();            HashSet<Date> hs = new HashSet<Date>();            hs.addAll(headers);            headers.clear();            headers.addAll(hs);                    Collections.sort(header,dateComparator);            Collections.reverse(headers);

我正在使用第三方库:StickyGridHeadersGridView所以这是我的适配器:

@OverrIDepublic int getCountForheader(int header) {    // Todo auto-generated method stub    return 1;}    @OverrIDe    public int getNumheaders() {        // Todo auto-generated method stub        return headers.size();    }    @OverrIDepublic VIEw getheaderVIEw(int position, VIEw convertVIEw, VIEwGroup parent) {    // Todo auto-generated method stub    if (convertVIEw == null) {        convertVIEw = inflater.inflate(R.layout.header, parent, false);        TextVIEw tvheader = (TextVIEw) convertVIEw                .findVIEwByID(R.ID.tvheader);        String headerTitle = headers.get(position).toString();        if (headerTitle.contains("01 00:00:00 EET")) {            headerTitle = headerTitle.replace("01 00:00:00 EET", "");        }        if (headerTitle.contains("01 00:00:00 EEST")) {            headerTitle = headerTitle.replace("01 00:00:00 EEST", "");        }        if (headerTitle.contains("02 00:00:00 EET")) {            headerTitle = headerTitle.replace("02 00:00:00 EET", "");        }        if (headerTitle.contains("02 00:00:00 EEST")) {            headerTitle = headerTitle.replace("02 00:00:00 EEST", "");        }        if (headerTitle.contains("15 00:00:00 EET")) {            headerTitle = headerTitle.replace("15 00:00:00 EET", "");        }        // days        if (headerTitle.contains("Mon")) {            headerTitle = headerTitle.replace("Mon", "");        }        if (headerTitle.contains("Tue")) {            headerTitle = headerTitle.replace("Tue", "");        }        if (headerTitle.contains("Wed")) {            headerTitle = headerTitle.replace("Wed", "");        }        if (headerTitle.contains("Thu")) {            headerTitle = headerTitle.replace("Thu", "");        }        if (headerTitle.contains("Fri")) {            headerTitle = headerTitle.replace("Fri", "");        }        if (headerTitle.contains("Sat")) {            headerTitle = headerTitle.replace("Sat", "");        }        if (headerTitle.contains("Sun")) {            headerTitle = headerTitle.replace("Sun", "");        }        // months        if (headerTitle.contains("Jan")) {            headerTitle = headerTitle.replace("Jan", "January");        }        if (headerTitle.contains("Feb")) {            headerTitle = headerTitle.replace("Feb", "February");        }        if (headerTitle.contains("Mar")) {            headerTitle = headerTitle.replace("Mar", "march");        }        if (headerTitle.contains("Apr")) {            headerTitle = headerTitle.replace("Apr", "April");        }        if (headerTitle.contains("Jun")) {            headerTitle = headerTitle.replace("Jun", "June");        }        if (headerTitle.contains("Jul")) {            headerTitle = headerTitle.replace("Jul", "July");        }        if (headerTitle.contains("Aug")) {            headerTitle = headerTitle.replace("Aug", "August");        }        if (headerTitle.contains("Sep")) {            headerTitle = headerTitle.replace("Sep", "September");        }        if (headerTitle.contains("Oct")) {            headerTitle = headerTitle.replace("Oct", "October");        }        if (headerTitle.contains("Nov")) {            headerTitle = headerTitle.replace("Nov", "November");        }        if (headerTitle.contains("Dec")) {            headerTitle = headerTitle.replace("Dec", "December");        }        tvheader.setText(headerTitle);    }

但是现在结果都混淆了! 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);    }};

你可以用这行代码调用它:

Collections.sort(List,dateComparator);

这是如何使用数组而不是集合

Date[] arrayDates = new Date[List.size()];arrayDates = List.toArray(arrayDates);Arrays.sort(arrayDates, dateComparator);
总结

以上是内存溢出为你收集整理的java – 正确格式化日期全部内容,希望文章能够帮你解决java – 正确格式化日期所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1119033.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存