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
- Migrar de jack a Java nativo 8
- Android java obtener html etiqueta de imagen de cadena
- GetDefaultTracker () de una clase que extiende InputMethodService?
- Obtener la hora y la fecha actuales en una escala de tiempo de 24 horas
- Error al generar apk firmado
Gracias
- Ordenar por atributo de entidad extranjera en ORMLite
- La inspección muestra la excepción de puntero nulo mientras compruebo la probabilidad nula
- Cómo obtener el número de artículo (posición) de una cadena
- ¿Cuál es el orden correcto de llamar métodos de superclase en los métodos onPause, onStop y onDestroy? ¿y por qué?
- Android: cambia TextView textColor cuando el padre está enfocado
- Cómo leer datos del archivo XLS (Excel)
- ActionBarSherlock, ViewPager, TabsAdapter Fragmentos de tabulación anidados
- ¿Debo hacer `Thread.currentThread (). Interrupt ()` before `throw new InterruptedIOException ()`?
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:
-
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);
-
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.
- Error de conversión a formato Dalvik: No se puede ejecutar dex: java.nio.BufferOverflowException
- Aparato de vista de Android con indicador de página