从堆栈溢出问题继续
在没有时间的情况下获取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();
更新
method 1
使用的临时对象String
创建,同时method 2
看起来像是一个黑客而不是解决方案。发布于 2011-02-19 18:35:48
你一定要用java.util.Date
吗?我强烈建议您使用Joda Time或Java8中的java.time
包。具体地说,虽然日期和日历总是表示时间上的特定时刻,但没有“只是一个日期”这样的概念,Joda time确实有一种类型来表示这一点(LocalDate
)。如果你能够使用表示你实际想要做的事情的类型,你的代码将会清晰得多。
使用Joda Time或java.time
而不是内置的java.util
类型还有很多其他原因--它们通常是更好的API。如果你需要的话,你可以在你自己的代码边界上转换成java.util.Date
或者从它转换而来,比如数据库交互。
发布于 2012-02-15 15:37:17
下面是我用来获取今天的日期,时间设置为00:00:00
的日期
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date today = new Date();
Date todayWithZeroTime = formatter.parse(formatter.format(today));
发布于 2013-10-12 02:38:45
您可以使用Apache Commons库中的DateUtils.truncate。
示例:
DateUtils.truncate(new Date(), java.util.Calendar.DAY_OF_MONTH)
https://stackoverflow.com/questions/5050170
复制相似问题