首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中获取没有时间的日期?

如何在Java中获取没有时间的日期?
EN

Stack Overflow用户
提问于 2011-02-19 18:15:32
回答 23查看 502.1K关注 0票数 265

从堆栈溢出问题继续

在没有时间的情况下获取Date对象的最有效方法是什么?除了这两条路,还有别的路吗?

代码语言:javascript
复制
// 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. 我知道Joda-Time;我只是在试着避免为这样一个简单的(我认为)任务添加额外的库。但是根据到目前为止的答案,Joda-Time似乎非常流行,所以我可能会考虑它。
  2. by efficient,我的意思是我想避免method 1使用的临时对象String创建,同时method 2看起来像是一个黑客而不是解决方案。
EN

回答 23

Stack Overflow用户

回答已采纳

发布于 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或者从它转换而来,比如数据库交互。

票数 116
EN

Stack Overflow用户

发布于 2012-02-15 15:37:17

下面是我用来获取今天的日期,时间设置为00:00:00的日期

代码语言:javascript
复制
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");

Date today = new Date();

Date todayWithZeroTime = formatter.parse(formatter.format(today));
票数 73
EN

Stack Overflow用户

发布于 2013-10-12 02:38:45

您可以使用Apache Commons库中的DateUtils.truncate

示例:

代码语言:javascript
复制
DateUtils.truncate(new Date(), java.util.Calendar.DAY_OF_MONTH)
票数 61
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5050170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档