继续 Stack Overflow 问题 Java program to get the current date without timestamp :
在没有时间的情况下获取 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();
更新:
我知道 Joda-Time ;我只是想避免为这样一个简单的(我认为)任务添加额外的库。但根据目前的答案,Joda-Time 似乎非常受欢迎,所以我可能会考虑。
通过 _高效_,我的意思是我想避免临时对象
String
创建method 1
,同时method 2
解决方案似乎是一个。
原文由 Rosdi Kasim 发布,翻译遵循 CC BY-SA 4.0 许可协议
你绝对 必须 使用
java.util.Date
吗?我强烈建议您改用 Joda Time 或 Java 8 中的 —java.time
包。特别是,虽然 Date 和 Calendar 总是 代表一个特定的时刻,没有“只是一个日期”这样的概念,但 Joda Time 确实 有一个类型代表这个(LocalDate
)。如果您能够使用代表您实际尝试做的事情的类型,您的代码将会更加清晰。使用 Joda Time 或
java.time
而不是内置的java.util
类型还有很多其他原因 - 它们通常是更好的 API。如果需要,您始终可以在自己的代码边界处与java.util.Date
相互转换,例如用于数据库交互。