从堆栈溢出问题继续 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 似乎非常受欢迎,所以我可能会考虑它。
通过高效,我的意思是我想避免
方法1
使用的临时对象String
创建,同时方法 2
看起来像是 hack 而不是解决方案。
最佳答案
你绝对有使用java.util.Date
吗?我会彻底建议您使用 Joda Time或 Java 8 中的 java.time
包。特别是,虽然 Date 和 Calendar always 代表一个特定的时间点,没有“只是一个日期”这样的概念,但 Joda Time 确实 有一个代表这个的类型(本地日期
)。如果您能够使用代表您实际尝试执行的类型的类型,您的代码将会更加清晰。
使用 Joda Time 或 java.time
而不是内置的 java.util
类型还有很多其他原因 - 它们通常是更好的 API .如果需要,您始终可以在自己的代码边界处与 java.util.Date
进行转换,例如用于数据库交互。
关于java - 如何在 Java 中获取没有时间的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5050170/