使用日期获取昨天的日期

2022-08-31 07:47:09

以下函数生成今天的日期;我怎样才能让它只产生昨天的日期?

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

这是输出:

2012-07-10

我只需要像下面这样的昨天的日期。是否可以在我的函数中执行此操作?

2012-07-09

答案 1

更新

最近,使用 JSR-310 对日期时间 API 进行了改进。

Instant now = Instant.now();
Instant yesterday = now.minus(1, ChronoUnit.DAYS);
System.out.println(now);
System.out.println(yesterday);

https://ideone.com/91M1eU

过时的答案

您减去了错误的数字:

请改用:Calendar

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

然后,将您的方法修改为以下内容:

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


答案 2

您可以执行以下操作:

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

注意:如果您想进一步向后日期乘以24 * 60 * 60 * 1000的天数,例如:

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

同样,您可以通过将值添加到 System.currentTimeMillis() 来获取未来日期,例如:

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