一尘不染

如何在Java中没有时间获得日期?

java

继续从Stack Overflow问题Java程序获取没有时间戳的当前日期:

没有时间获取Date对象的最有效方法是什么?除了这两种以外,还有其他方法吗?

// Method 1
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dateWithoutTime = sdf.parse(sdf.format(new Date()));

// Method 2
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
dateWithoutTime = cal.getTime();

更新:

  1. 我知道乔达·时代;我只是想避免为这样一个简单的任务增加库(我认为)。但是根据到目前为止的答案,《乔达时报》似乎非常受欢迎,因此我可以考虑一下。

  2. 通过高效的,我的意思是我想避免临时对象String的创建13759 method 1,同时method 2似乎是一个黑客,而不是一个解决方案。


阅读 616

收藏
2020-03-21

共1个答案

一尘不染

你绝对必须使用java.util.Date吗?我将彻底建议你使用Joda Time或java.timeJava 8中的软件包。特别是,虽然“日期”和“日历” 始终代表一个特定的时间瞬间,但没有“仅是日期”这样的概念,但“乔达时间” 确实有一个表示该时间的类型(LocalDate)。如果你能够使用表示你实际要执行的操作的类型,则代码将更加清晰。

使用Joda Time或使用java.time内置java.util类型的原因很多很多,它们通常是更好的API。java.util.Date如果需要,例如在进行数据库交互时,你始终可以在自己代码的边界处与a 进行相互转换。

2020-03-21