你好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 – 正确格式化日期所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)