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
- SimpleDateFormat 24h
- Conversión de aaaa-mm-dd en dd mm aaaa
- Obtenga día, mes y año por separado usando SimpleDateFormat
- Problema con el análisis Fecha cadena:
- Android SimpleDateFormat devolver el tiempo incorrecto entre la medianoche y 1 am
Resultado Esperado:
17 / JUNIO / 2014
- Mes sin ceros iniciales en Android
- Get Value Of Day Month forma objeto de la fecha en Android?
- Android parse String hasta la fecha - carácter de patrón desconocido 'X'
- SimpleDateFormat parser
- SimpleDateFormat devuelve una fecha de 24 horas: ¿cómo obtener una fecha de 12 horas?
- Android.text.format.DateFormat "HH" no se reconoce como con java.text.SimpleDateFormat
- Conflicto de modo de 12/24 horas
- Objeto de fecha SimpleDateFormat no analiza correctamente la cadena de hora en el entorno Java (Android)
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