2012-07-11 10 views
90

La seguente funzione produce la data odierna; come posso farlo produrre solo la data di ieri?Ottenere data di ieri utilizzando la data

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

Questa è l'uscita: data di

2012-07-10 

ho solo bisogno di ieri come di seguito. È possibile farlo nella mia funzione?

2012-07-09 

risposta

238

Stai sottraendo il numero sbagliato:

Uso Calendar invece:

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

Quindi, modificare il metodo per il seguente:

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

Vedere

+0

data di ritorno del codice in mer 11 lug 04:21:43 formato GMT 2012. ma voglio 2012-7-11, per favore aiutami come estrarre questo da un dato output. – Jaydipsinh

+8

Usa 'yyyy-MM-dd' come formato –

+0

Quale sarebbe un buon test unitario al metodo' 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

Non v'è alcuna funzione diretta per ottenere la data di ieri.

Per ottenere la data di ieri, è necessario utilizzare Calendar sottraendo -1.

2

cambiato dal codice:

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

}

, ma si fa meglio utilizzando 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())); 

Usa Calender Api

6

provare questo:

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

Prova questa;

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

Si può fare seguente:

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

Nota: se si desidera che la data più indietro moltiplicare numeri di giornata con 24 * 60 * 60 * 1000, ad esempio:

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

Allo stesso modo , è possibile ottenere la data futura aggiungendo il valore a System.currentTimeMillis(), ad esempio:

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

Mi chiedo che cosa succede durante la frangia di un secondo intercalare ... – codeaperature

+0

Ed è possibile utilizzare TimeUnit.DAYS.toMillis (1) calcola invece il giorno – John

+0

e cosa succede se la NASA usa il tuo codice per andare su Marte ?? –

Problemi correlati