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

标签 java date

从堆栈溢出问题继续 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();

更新:

  1. 我知道 Joda-Time ;我只是想避免为这样一个简单的(我认为)任务添加额外的库。但根据目前为止的答案,Joda-Time 似乎非常受欢迎,所以我可能会考虑它。

  2. 通过高效,我的意思是我想避免方法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/

相关文章:

mysql - 以 "dd.mm.yyyy"等格式在表中插入日期

java - Java 中的动态转换和调用

java - Apache Subversion 预提交 Hook 失败

java - Intent putExtra 持续存在

date - 如何从Elasticsearch用一种格式获取日期?

php - 日期选择框值转换为 SQL 数据库日期类型值

java - DatumFactory 不是 ImageIO SPI 类

java - 搜索数组

r - 使用 ggplot2 将持续时间绘制为线条

php - Mysql select - 获取时间戳的日期