在Java中,要判断当前时间是否为昨天,你可以通过比较LocalDateTime
(或ZonedDateTime
,如果你需要考虑时区)来表示的当前时间与昨天同一时间的LocalDateTime
(或ZonedDateTime
)来实现。以下是一个使用LocalDateTime
的例子,这个例子假设我们不关心时区(即我们使用的是系统默认时区或特定时区但在这个例子中不显式指定):
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
public class YesterdayCheck {
public static void main(String[] args) {
// 获取当前时间
LocalDateTime now = LocalDateTime.now();
// 计算昨天的同一时间
LocalDateTime yesterday = now.minusDays(1);
// 将当前时间的时间部分置为00:00:00,以仅比较日期部分
LocalDateTime todayStart = now.toLocalDate().atStartOfDay();
// 类似地,获取昨天开始的时间
LocalDateTime yesterdayStart = yesterday.toLocalDate().atStartOfDay();
// 检查当前时间是否在昨天的范围内
boolean isYesterday = !todayStart.isBefore(now) && now.isBefore(todayStart.plusDays(1));
// 或者,更简洁的方式,只检查日期的差异
boolean isYesterdaySimple = LocalDate.now().minusDays(1).equals(now.toLocalDate());
System.out.println("使用范围判断是否为昨天: " + isYesterday);
System.out.println("使用日期差异判断是否为昨天: " + isYesterdaySimple);
}
}
在这个例子中,我提供了两种方法来检查当前时间是否为昨天:
- 范围判断:首先,计算昨天的同一时间(
yesterday
),然后获取今天和昨天的开始时间(即午夜00:00:00)。接着,检查当前时间是否在昨天的开始时间和今天的开始时间之间(不包括今天的开始时间,因为那将表示今天的时间)。 - 日期差异判断:这是一种更简洁的方法,它直接比较当前时间的日期部分(
LocalDate.now()
)与昨天日期的差异。如果差异正好是1天,则当前时间是昨天。
第二种方法(isYesterdaySimple
)通常更直观且易于理解,也是更常用的判断方式。选择哪种方式取决于你的具体需求和偏好。