Java程序无需时间戳即可获取当前日期

我需要一个Java程序来获取没有时间戳当前日期

Date d = new Date();

给我日期和时间戳。

但我只需要日期,没有时间戳。 我使用这个日期来比较没有时间戳的另一个日期对象。

打印时

System.out.println("Current Date : " + d)

它应该打印May 11 2010 - 00:00:00


一个java.util.Date对象是一种时间戳 - 它包含自1970年1月1日00:00:00 UTC以来的毫秒数。 所以你不能使用标准的Date对象来包含一天/一年/一年,而没有时间。

据我所知,没有真正简单的方法来比较日期,只需在标准Java API中考虑日期(而不是时间)。 您可以使用班级Calendar并清除小时,分钟,秒和毫秒:

Calendar cal = Calendar.getInstance();
cal.clear(Calendar.HOUR_OF_DAY);
cal.clear(Calendar.AM_PM);
cal.clear(Calendar.MINUTE);
cal.clear(Calendar.SECOND);
cal.clear(Calendar.MILLISECOND);

对包含要比较的日期的另一个Calendar对象执行相同操作,并使用after()before()方法进行比较。

正如java.util.Calendar.clear的Javadoc (int字段)所解释的那样:

HOUR_OF_DAYHOURAM_PM字段是独立处理的,并且适用于当天时间的解析规则。 清除其中一个字段不会重置此日历的小时数值。 使用set(Calendar.HOUR_OF_DAY,0)重置小时值。

编辑 - 上面的答案是从2010年开始的; 在Java 8中,包java.time有一个新的日期和时间API,它比旧的java.util.Datejava.util.Calendar类更加强大和有用。 使用新的日期和时间类,而不是旧的。


你总是可以使用apache commons的DateUtils类。 它具有静态方法isSameDay() ,它“检查两个日期对象是否在同一天忽略时间。”

static boolean isSameDay(Date date1, Date date2) 

使用DateFormat解决此问题:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
DateFormat dateFormat2 = new SimpleDateFormat("MM-dd-yyyy");
print(dateFormat.format(new Date()); // will print like 2014-02-20
print(dateFormat2.format(new Date()); // will print like 02-20-2014
链接地址: http://www.djcxy.com/p/18459.html

上一篇: Java program to get the current date without timestamp

下一篇: What do Clustered and Non clustered index actually mean?