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/

相关文章:

java - Selenium java chrome 驱动程序,获取上次下载名称

从 MySql 到 Excel 的 PHP select 语句。将日期格式化为 YYYYMMDD

java - 日期检查的基本 JUnit

java - Spring MVC 无法将字符串转换为日期

php - strtotime() & date() 将日期转换为与以前相同的格式时出现奇怪的行为

java - 如何处理 java.time 中的完整周期?

java - 尝试编写一个使用 OutputStream 写入文本文件的循环

java - Spring Data JPA – 自定义 native 查询方法列表打印 java.lang.Object

java - QueryDSL 和 Hibernate 搜索 isNull 和 isNotNull 查询

angularjs - 如何将 ng-model 字符串格式化为 Angular Material 日期选择器的日期