Cómo analizar el formato de fecha "dd-MM" para obtener el año actual? "

Tengo que analizar la fecha de formato " 17-Jun " usando Java.But el problema es cuando trato de analizar el formato " dd-MM " usando SimpleDateFormat que está regresando como "miércoles 17 00:00:00 IST 1970" . posible obtener corriente (2014) año en lugar de 1970.

Mi resultado:
17 / JUNIO / 1970

Resultado Esperado:
17 / JUNIO / 2014

Echa un vistazo a esto..

Calendar c = Calendar.getInstance(); c.set(Calendar.DATE, 17); c.set(Calendar.MONTH, 5); c.set(Calendar.YEAR, c.get(Calendar.YEAR)); Date date=new Date(c.getTimeInMillis()); SimpleDateFormat simpleDateformatter = new SimpleDateFormat("dd/mmm/yyyy"); String convertedDate = simpleDateformatter .format(date); 

Para obtener un año sólo puede utilizar

 Calendar cal = Calendar.getInstance(); cal.get(Calendar.YEAR) will fetch you current year 

Espero que ayudó … ðŸ™‚

Prueba esto

  Calendar c = Calendar.getInstance(); c.set(Calendar.DATE, 17); c.set(Calendar.MONTH, 5); c.set(Calendar.YEAR, c.get(Calendar.YEAR)); Date d=new Date(c.getTimeInMillis()); SimpleDateFormat formatter = new SimpleDateFormat("dd- mmm"); String conDate = formatter.format(d); 

Hazlo así

 Date date = new SimpleDateFormat("dd-MMM-yyyy").parse("17-Jun-"+ Calendar.getInstance().get(Calendar.YEAR)); 

Tendrás que escribir un método de utilidad, no hay nada en SimpleDateFormat que interprete un año inexistente como el año actual. Algo como esto:

 public static Date parseDate(String dateString) throws ParseException { //determine current year Calendar today = Calendar.getInstance(); int currentYear = today.get(Calendar.YEAR); //parse input SimpleDateFormat format = new SimpleDateFormat("dd-MMM"); Date parsed = format.parse(dateString); // set current year on parsed value Calendar cal = Calendar.getInstance(); cal.setTime(parsed); cal.set(Calendar.YEAR, currentYear); return cal.getTime(); } 

Prueba esto:

 SimpleDateFormat dfDate = new SimpleDateFormat("dd-MM-yyyy"); java.util.Date d = null; try { d = dfDate.parse("17-Jun-"+ Calendar.getInstance().get(Calendar.YEAR)); } catch (java.text.ParseException e) { e.printStackTrace(); } System.out.println(""+d ); 

Su problema será resuelto.

Supongo que la forma más sencilla es hacer esto:

 DateFormat dateFormat = new SimpleDateFormat("yyyy/MMM/dd"); Date date = new Date(); System.out.println("Time is: " + dateFormat.format(date) ); 

Esto le da exactamente lo que desea. ver también

http://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html

Poco tarde, pero si realmente no quieres usar el calendario en absoluto – como recojo de tus comentarios a las respuestas correctas anteriores – (no se recomienda con el uso de métodos obsoletos, pero aún así):

 SimpleDateFormat format = new SimpleDateFormat("dd-MMM"); Date date = format.parse("17-JUN"); date.setYear(new Date().getYear()); System.out.println(date); 

Salida:

Mar 17 jun 00:00:00 IST 2014

Todas las respuestas dadas aquí son más o menos correctas, pero me doy cuenta de que todavía se pasa por alto un aspecto de detalle, a saber, si la combinación de día y meses se ajusta al año actual (problema del 29 de febrero). Por lo tanto, sugeriría un análisis estricto como el siguiente:

 String ddMMM = "17-Jun"; SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy"); sdf.setLenient(false); // in order to check for "29-Feb" TimeZone tz = TimeZone.getDefault(); // or change to your specific time zone Date date = sdf.parse(ddMMM + "-" + new GregorianCalendar(tz).get(Calendar.YEAR)); 

Tratar,

  String s2 = "Wed Jun 17 00:00:00 1970"; SimpleDateFormat sdf1 = new SimpleDateFormat("E MMM dd hh:mm:ss yyyy"); SimpleDateFormat sdf2 = new SimpleDateFormat("dd/MMM/yyyy"); try { Date d1 = sdf1.parse(s2); System.out.println(d1); String s3 = sdf2.format(d1); System.out.println("Before Changing :: "+s3); Calendar cal = Calendar.getInstance(); cal.setTime(d1); cal.add(Calendar.YEAR, 2014-1970); d1 = cal.getTime(); String s4 = sdf2.format(d1); System.out.println("After Changing :: "+s4); } catch (ParseException e) { e.printStackTrace(); } 

Salida

 Before Changing :: 17/Jun/1970 After Changing :: 17/Jun/2014 
  • Costumize android Fecha como twitter y feed de noticias de instagram
  • Extraño resultado de análisis de fecha y hora con SimpleDateFormat
  • ¿Cómo puedo analizar una cadena de fecha con DateFormat?
  • SimpleDateFormat ParseException: Unparseable date Error
  • SimpleDateFormat - fecha imposible
  • Conversión de cadena-fecha con nanosegundos
  • ¿Por qué este análisis de SimpleDataFormat falla en Android?
  • SimpleDateFormat: excepción de fecha incomparable
  • SimpleDateFormat toma demasiado tiempo cuando se incluye la zona horaria
  • Android Formato de fecha con zona horaria
  • Eliminar "0" principal en el día del mes SimpleDateFormat
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.