2012-07-11 55 views
90

La siguiente función produce la fecha de hoy; ¿Cómo puedo hacer que produzca solo la fecha de ayer?Obtener la fecha de ayer usando Fecha

private String toDate() { 
     DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
     Date date = new Date();  
     return dateFormat.format(date).toString(); 
} 

Ésta es la salida: Fecha de

2012-07-10 

sólo necesito de ayer, como a continuación. ¿Es posible hacer esto en mi función?

2012-07-09 

Respuesta

238

está restando el número equivocado:

Uso Calendar lugar:

private Date yesterday() { 
    final Calendar cal = Calendar.getInstance(); 
    cal.add(Calendar.DATE, -1); 
    return cal.getTime(); 
} 

A continuación, modifique su método a lo siguiente:

private String getYesterdayDateString() { 
     DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
     return dateFormat.format(yesterday()); 
} 

Ver

+0

esta fecha de devolución del código en Wed Jul 11 ​​04:21:43 GMT 2012 format. pero quiero 2012-7-11, por favor, ayúdenme a extraer esto de la salida dada. – Jaydipsinh

+8

Use 'aaaa-MM-dd' como formato –

+0

¿Cuál sería una buena prueba de unidad para el método' yesterday() '? – prime

1
Calendar cal = Calendar.getInstance(); 
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    System.out.println("Today's date is "+dateFormat.format(cal.getTime())); 

    cal.add(Calendar.DATE, -1); 
    System.out.println("Yesterday's date was "+dateFormat.format(cal.getTime())); 
1

No hay una función directa para obtener la fecha de ayer. Para obtener la fecha de ayer, necesita usar Calendar restando -1.

2

cambió a partir del código:

private String toDate(long timestamp) { 
    Date date = new Date (timestamp * 1000 - 24 * 60 * 60 * 1000); 
    return new SimpleDateFormat("yyyy-MM-dd").format(date).toString(); 

}

pero lo mejor es hacer uso de calendar.

8
Calendar cal = Calendar.getInstance(); 
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    System.out.println("Today's date is "+dateFormat.format(cal.getTime())); 

    cal.add(Calendar.DATE, -1); 
    System.out.println("Yesterday's date was "+dateFormat.format(cal.getTime())); 

Uso del calendario Api

6

prueba este:

private String toDate() { 
    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 

    // Create a calendar object with today date. Calendar is in java.util pakage. 
    Calendar calendar = Calendar.getInstance(); 

    // Move calendar to yesterday 
    calendar.add(Calendar.DATE, -1); 

    // Get current date of calendar which point to the yesterday now 
    Date yesterday = calendar.getTime(); 

    return dateFormat.format(yesterday).toString(); 
} 
3

probar este;

public String toDate() { 
     DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
     Calendar cal = Calendar.getInstance(); 
     cal.add(Calendar.DATE, -1); 
     return dateFormat.format(cal.getTime()); 
    } 
29

Puede hacer lo siguiente:

private Date getMeYesterday(){ 
    return new Date(System.currentTimeMillis()-24*60*60*1000); 
} 

Nota: si desea que la fecha número se multiplica aún más hacia atrás del día con 24 * 60 * 60 * 1000, por ejemplo:

private Date getPreviousWeekDate(){ 
    return new Date(System.currentTimeMillis()-7*24*60*60*1000); 
} 

Del mismo modo , puede obtener una fecha futura agregando el valor a System.currentTimeMillis(), por ejemplo:

private Date getMeTomorrow(){ 
    return new Date(System.currentTimeMillis()+24*60*60*1000); 
} 
+1

Me pregunto qué sucede durante el margen de un segundo intercalado ... – codeaperature

+0

Y puede usar TimeUnit.DAYS.toMillis (1) en su lugar, calcula el día – John

+0

y ¿qué ocurre si la NASA usa su código para ir a Marte? –

Cuestiones relacionadas