如何检查日期对象是否等于昨天?

新手上路,请多包涵

现在我正在使用这段代码

Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE) - 1, 12, 0, 0); //Sets Calendar to "yeserday, 12am"
if(sdf.format(getDateFromLine(line)).equals(sdf.format(cal.getTime())))                         //getDateFromLine() returns a Date Object that is always at 12pm
{...CODE

必须有一种更流畅的方法来检查 getdateFromLine() 返回的日期是否是昨天的日期。只有日期很重要,而不是时间。这就是我使用 SimpleDateFormat 的原因。提前感谢您的帮助!

原文由 tzippy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 539
2 个回答
Calendar c1 = Calendar.getInstance(); // today
c1.add(Calendar.DAY_OF_YEAR, -1); // yesterday

Calendar c2 = Calendar.getInstance();
c2.setTime(getDateFromLine(line)); // your date

if (c1.get(Calendar.YEAR) == c2.get(Calendar.YEAR)
  && c1.get(Calendar.DAY_OF_YEAR) == c2.get(Calendar.DAY_OF_YEAR)) {

这也适用于 1 月 1 日等日期。

原文由 Andrei Fierbinteanu 发布,翻译遵循 CC BY-SA 2.5 许可协议

java.time

使用 java.time Java 8 内置的框架

LocalDate now = LocalDate.now(); //2015-11-24
LocalDate yesterday = LocalDate.now().minusDays(1); //2015-11-23

yesterday.equals(now); //false
yesterday.equals(yesterday); //true

官方 Oracle LocalDate 教程 状态

equals 方法应该用于比较。

If you’re working with objects such as LocalDateTime , ZonedDateTime , or OffsetDateTime , you may convert to LocalDate .

 LocalDateTime.now().toLocalDate(); # 2015-11-24

原文由 Przemek 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题