Android obtiene la fecha antes de 7 días (una semana)

Cómo obtener la fecha antes de una semana a partir de ahora en android en este formato:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

Ex: ahora 2010-09-19 HH:mm:ss , antes de una semana 2010-09-12 HH:mm:ss

Gracias

Analizar la fecha:

 Date myDate = dateFormat.parse(dateString); 

Y luego, o bien averiguar cuántos milisegundos necesita para restar:

 Date newDate = new Date(myDate.getTime() - 604800000L); // 7 * 24 * 60 * 60 * 1000 

O utilice la API proporcionada por la clase java.util.Calendar :

 Calendar calendar = Calendar.getInstance(); calendar.setTime(myDate); calendar.add(Calendar.DAY_OF_YEAR, -7); Date newDate = calendar.getTime(); 

Luego, si es necesario, convertirlo de nuevo a una cadena:

 String date = dateFormat.format(newDate); 

He creado mi propia función que puede ser útil para obtener Next / Previous fecha de

Fecha actual:

 /** * Pass your date format and no of days for minus from current * If you want to get previous date then pass days with minus sign * else you can pass as it is for next date * @param dateFormat * @param days * @return Calculated Date */ public static String getCalculatedDate(String dateFormat, int days) { Calendar cal = Calendar.getInstance(); SimpleDateFormat s = new SimpleDateFormat(dateFormat); cal.add(Calendar.DAY_OF_YEAR, days); return s.format(new Date(cal.getTimeInMillis())); } 

Ejemplo:

 getCalculatedDate("dd-MM-yyyy", -10); // It will gives you date before 10 days from current date getCalculatedDate("dd-MM-yyyy", 10); // It will gives you date after 10 days from current date 

Y si usted quiere conseguir la fecha calculada con pasar su propia fecha:

 public static String getCalculatedDate(String date, String dateFormat, int days) { Calendar cal = Calendar.getInstance(); SimpleDateFormat s = new SimpleDateFormat(dateFormat); cal.add(Calendar.DAY_OF_YEAR, days); try { return s.format(new Date(s.parse(date).getTime())); } catch (ParseException e) { // TODO Auto-generated catch block Log.e("TAG", "Error in Parsing Date : " + e.getMessage()); } return null; } 

Ejemplo con Pasar fecha propia:

 getCalculatedDate("01-01-2015", "dd-MM-yyyy", -10); // It will gives you date before 10 days from given date getCalculatedDate("01-01-2015", "dd-MM-yyyy", 10); // It will gives you date after 10 days from given date 

Joda-Time

El uso de la biblioteca Joda-Time hace que el trabajo de fecha y hora sea mucho más fácil.

Tenga en cuenta el uso de una zona horaria. Si se omite, está trabajando en UTC o en la zona horaria predeterminada actual de JVM.

 DateTime now = DateTime.now ( DateTimeZone.forID( "America/Montreal" ) ) ; DateTime weekAgo = now.minusWeeks( 1 ); DateTime weekAgoStart = weekAgo.withTimeAtStartOfDay(); 

Puedo ver dos maneras:

  1. Utilice un calendario gregoriano :

     Calendar someDate = GregorianCalendar.getInstance(); someDate.add(Calendar.DAY_OF_YEAR, -7); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String formattedDate = dateFormat.format(someDate); 
  2. Utilice un android.text.format.Time :

     long yourDateMillis = System.currentTimeMillis() - (7 * 24 * 60 * 60 * 1000); Time yourDate = new Time(); yourDate.set(yourDateMillis); String formattedDate = yourDate.format("%Y-%m-%d %H:%M:%S"); 

La solución 1 es la forma java "oficial", pero usar un GregorianCalendar puede tener serios problemas de rendimiento para que los ingenieros de Android hayan añadido el objeto android.text.format.Time para solucionarlo.

  • Android Studio no puede resolver ninguna dependencia
  • Android Studio. Un error
  • Captura de EditText Foco perdido
  • Bucle eficiente a través de la lista de Java
  • Cómo crear GUI en Android en lugar de utilizar XML?
  • Inyección del presentador con Dagger 2
  • Lectura rápida de enteros pequeños endian de archivo
  • Android: Especifique dos imágenes diferentes para el togglebutton mediante XML
  • Archivo zip con memoria en Java
  • Android: actividad establecer conexión de red
  • Consulta SQLite de Android y uso del cursor para tratar varias filas
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.