上一篇
场景引入:
早上9点,程序员小张突然接到需求:"统计系统昨天的订单数据",他盯着new Date()
发愁——"Java里怎么快速获取昨天的日期呢?" 🤔 别急!今天我们就用5分钟彻底掌握这个高频操作!
import java.util.Calendar; import java.text.SimpleDateFormat; public class YesterdayDemo { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, -1); // 关键代码!日期-1天 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); System.out.println("昨天的日期是:" + sdf.format(calendar.getTime())); // 输出示例(假设今天是2025-08-20):2025-08-19 } }
🔹 优点:兼容所有Java版本
🔹 注意:Calendar.MONTH
是从0开始计数的(1月=0)
import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class YesterdayDemo8 { public static void main(String[] args) { LocalDate today = LocalDate.now(); LocalDate yesterday = today.minusDays(1); // 优雅的链式调用 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日"); System.out.println("昨天的日期是:" + yesterday.format(formatter)); // 输出示例:2025年08月19日 } }
✨ 优势:
ZonedDateTime
) import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; public class YesterdayInstant { public static void main(String[] args) { Instant now = Instant.now(); Instant yesterdayInstant = now.minusSeconds(24 * 60 * 60); // 减去24小时 System.out.println("昨天此刻时间戳:" + yesterdayInstant); // 转换为本地日期 System.out.println("本地昨天日期:" + yesterdayInstant.atZone(ZoneId.systemDefault()) .toLocalDate()); } }
🌍 适用场景:需要处理跨时区的时间计算
跨月/跨年自动处理:
LocalDate newYearDay = LocalDate.of(2025, 1, 1); System.out.println("前一天是:" + newYearDay.minusDays(1)); // 自动输出:2024-12-31
工作日计算:
需要结合TemporalAdjusters
:
LocalDate yesterday = LocalDate.now().minusDays(1); if (yesterday.getDayOfWeek() == DayOfWeek.SUNDAY) { System.out.println("昨天是周日哦~"); }
方法 | 线程安全 | 代码简洁度 | 是否需要处理时区 | Java版本要求 |
---|---|---|---|---|
Calendar |
需要 | 1+ | ||
LocalDate |
不需要 | 8+ | ||
Instant |
需要 | 8+ |
:
Calendar
📜 LocalDate
🎯 Instant
⏱️ 现在小张可以轻松完成任务啦!如果遇到闰秒问题...那就是另一个故事了 😉 (注:Java默认不处理闰秒)
本文由 彤举 于2025-08-01发表在【云服务器提供商】,文中图片由(彤举)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/499671.html
发表评论