如何在没有Java的情况下获取日期?
继续从堆栈溢出问题Java程序获取当前日期没有时间戳:
在没有时间的情况下获取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似乎非常受欢迎,所以我可能会考虑它。
通过高效,我的意思是我想避免method 1
使用的临时对象String
创建,同时method 2
看起来像是一个黑客而不是解决方案。
你绝对必须使用java.util.Date
吗? 我会彻底建议您使用Joda Time或Java 8的java.time
包。 特别是,虽然日期和日历始终代表特定的时间,但没有“只是日期”这样的概念,Joda时间确实有一个表示此类( LocalDate
)的类型。 如果你能够使用代表你实际想要做的事情的类型,你的代码将会变得更加清晰。
使用Joda Time或java.time
代替内置的java.util
类型有许多其他许多原因 - 它们通常是更好的API。 如果需要,您可以随时在自己的代码的边界处转换为java.util.Date
,或者从java.util.Date
转换为数据库交互。
以下是我用今天的日期设定为00:00:00
时间:
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date today = new Date();
Date todayWithZeroTime = formatter.parse(formatter.format(today));
您可以使用Apache Commons库中的DateUtils.truncate。
例:
DateUtils.truncate(new Date(), java.util.Calendar.DAY_OF_MONTH)
链接地址: http://www.djcxy.com/p/3041.html