Formato correcto de la fecha

Hola stackoverflowers , Digamos que tengo una base de datos con una fila llena de fechas, ¿de acuerdo?

Problema 1:

Como éste :

2013-06-01

Así que quiero traducir esta fecha a String

Entrada:

Mar 01 01:00:00 EET 2013

Como un ejemplo .. Entonces, ¿cómo puedo activar la salida de la fecha como esta:

Mar 2013 ?? Aquí están mis códigos:

 date = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH) .parse(mCursor.getString(mCursor .getColumnIndex(KEY_AVAILABILITYDATE))); list.add(date); 

Problema 2 (Problema 1 debe ser resuelto primero supongo):

Por supuesto quiero ordenar la lista a la que he añadido la fecha.

Así que ejecutar este código:

 Collections.sort(list); 

¡Pero francamente no clasifica correctamente! Está mezclado – fecha todas las equivocaciones.

Gracias por leer, espero que sea fácil!

Todos los códigos:

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

Después de perder alguna esperanza, decidí mostrarte todos los códigos:

Códigos:

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

Estoy usando la biblioteca de terceros: StickyGridHeadersGridView así que aquí está mi adaptador:

 @Override public int getCountForHeader(int header) { // TODO Auto-generated method stub return 1; } @Override public int getNumHeaders() { // TODO Auto-generated method stub return headers.size(); } @Override public 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); } 

Sin embargo ahora los resultados están todos mezclados y perdidos! El gridview es grande y solo veo:

Julio 2013 julio 2013 julio 2013

En cada fila. Que puedo hacer ? Gracias

Usted necesita construir un comparador para comparar dos fechas:

Aquí hay un código para ello:

 public static Comparator<Date> dateComparator = new Comparator<Date>() { public int compare(Date date1, Date date2) { return date1.compareTo(date2); } }; 

Y se puede llamar con esta línea de código:

 Collections.sort(list,dateComparator); 

Y esta es la forma de utilizar arrays en lugar de colecciones

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

Así que después de 1 día de trabajo contuniously en una solución, he descubierto que el problema se produjo de GridViewStickyHeaders – biblioteca externa.

¡El problema ocurre una vez que me desplácese! Todos los resultados se ensucian.

¡Gracias por su contribución! Tu ayuda realmente me ayudó! Gracias =)

1) Utilice "MMM yyyy" como su regex, así:

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

> Sep 2013

2) El uso de un comparador con compareTo() no debería ser necesario ya que Collections.sort(list) debería ordenar una lista de Dates cronológicamente de forma predeterminada.

Lo más probable es que el problema esté en algún lugar del código que no esté mostrando, pero no puedo estar seguro, ya que no está burlando de la base de datos, así que no puedo ejecutar el código en Eclipse.

Fuente: http://docs.oracle.com/javase/tutorial/collections/interfaces/order.html

  • Comando de voz para desbloquear la pantalla de Android
  • Sube fotos de la aplicación de Android a Google Cloud Storage / App Engine - carácter ilegal '_'
  • ActionBar no funciona al extender ListActivity
  • Error en la generación de Gradle en Android Studio
  • Seguridad y autenticación cliente-servidor
  • Ajuste de prioridad de solicitud Volley
  • Abra la aplicación para Android cuando la conexión a Internet esté activada, de lo contrario no mostrará ningún mensaje de conexión a Internet
  • Cargando imágenes grandes sin OutOfMemoryError
  • Android Studio obtiene una advertencia obsoleta incluso con @SuppressWarnings ("deprecation")
  • El método getApplicationContext () es indefinido - fragmento de problemas
  • Subir múltiples datos utilizando httpmime - Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.