使用 Date 获取昨天的日期

下面的函数生成今天的日期; 如何使它只生成昨天的日期?

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
366468 次浏览

更新

最近在使用 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());
}

你看

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()));

没有获取昨天日期的直接函数。

为了得到昨天的日期,您需要使用 Calendar减去 -1

改变了你的代码:

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

}

但是你最好用 日历

   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()));

使用 Calender Api

试试这个:

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();
}

试试这个

   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());
}

你可以这样做:

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);
}