如何在没有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

    上一篇: How do I get a Date without time in Java?

    下一篇: SQL maintain table indexes?