使用java.time包

Java 8引入了全新的日期和時(shí)間API,位于java.time包中。這個(gè)包提供了許多強(qiáng)大且易于使用的類來處理日期和時(shí)間。要獲取昨天的日期,你可以使用LocalDate類:

import java.time.LocalDate;

public class YesterdayDateExample {
    public static void main(String[] args) {
        LocalDate today = LocalDate.now();
        LocalDate yesterday = today.minusDays(1);
        System.out.println("Yesterday's date: " + yesterday);
    }
}

使用Calendar類

如果你使用的是Java 7或更早的版本,可以使用Calendar類來操作日期。雖然它比java.time包稍顯復(fù)雜,但也能完成任務(wù):

import java.util.Calendar;

public class YesterdayDateExample {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, -1);
        System.out.println("Yesterday's date: " + cal.getTime());
    }
}

使用SimpleDateFormat類

SimpleDateFormat類可用于格式化日期,也可以用來獲取昨天的日期。下面是一個(gè)示例:

import java.text.SimpleDateFormat;
import java.util.Date;

public class YesterdayDateExample {
    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date today = new Date();
        String yesterday = sdf.format(new Date(today.getTime() - (1000 * 60 * 60 * 24)));
        System.out.println("Yesterday's date: " + yesterday);
    }
}

使用Joda-Time庫

Joda-Time庫是Java日期和時(shí)間處理的另一個(gè)選擇,它提供了比標(biāo)準(zhǔn)Java庫更簡潔的API。下面是一個(gè)使用Joda-Time獲取昨天日期的示例:

import org.joda.time.DateTime;

public class YesterdayDateExample {
    public static void main(String[] args) {
        DateTime yesterday = new DateTime().minusDays(1);
        System.out.println("Yesterday's date: " + yesterday.toString("yyyy-MM-dd"));
    }
}

使用SimpleDateFormat的線程安全版本

SimpleDateFormat不是線程安全的,如果在多線程環(huán)境中使用,可能會導(dǎo)致問題。為了解決這個(gè)問題,可以使用ThreadLocal來創(chuàng)建線程安全的SimpleDateFormat實(shí)例:

import java.text.SimpleDateFormat;
import java.util.Date;

public class YesterdayDateExample {
    private static final ThreadLocal<SimpleDateFormat> dateFormat = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd"));

    public static void main(String[] args) {
        Date today = new Date();
        String yesterday = dateFormat.get().format(new Date(today.getTime() - (1000 * 60 * 60 * 24)));
        System.out.println("Yesterday's date: " + yesterday);
    }
}

使用第三方庫

除了上述方法外,還可以使用第三方庫來處理日期。例如,Apache Commons Lang庫中的DateUtils類提供了許多便捷的方法來操作日期:

import org.apache.commons.lang3.time.DateUtils;
import java.util.Date;

public class YesterdayDateExample {
    public static void main(String[] args) {
        Date today = new Date();
        Date yesterday = DateUtils.addDays(today, -1);
        System.out.println("Yesterday's date: " + yesterday);
    }
}

總結(jié)

無論你使用的是Java 8的java.time包還是較早版本的Calendar類、SimpleDateFormat類,甚至是第三方庫,獲取昨天的日期都變得相對簡單。選擇合適的方法取決于你的項(xiàng)目需求和個(gè)人偏好。希望本文能幫助你更輕松地處理日期操作。