Java程序获取没有时间戳的当前日期

min*_*nil 15 java

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

Date d = new Date();
Run Code Online (Sandbox Code Playgroud)

给我日期和时间戳.

但我只需要日期,没有时间戳.我使用此日期与另一个没有时间戳的日期对象进行比较.

在印刷上

System.out.println("Current Date : " + d)
Run Code Online (Sandbox Code Playgroud)

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

Jes*_*per 37

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

据我所知,通过仅在标准Java API中考虑日期(而不是时间)来比较日期并不是一种非常简单的方法.您可以使用class 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);
Run Code Online (Sandbox Code Playgroud)

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

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

HOUR_OF_DAY,HOURAM_PM字段的独立处理并应用了一天的时间分辨率规则.清除其中一个字段不会重置此日历的小时值.使用set(Calendar.HOUR_OF_DAY,0)重置小时值.

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

  • 这有效,但您必须清除HOUR和HOUR_OF_DAY以获得真正的清算 - 即将时间设置为12am. (5认同)

Jon*_*vis 11

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

static boolean isSameDay(Date date1, Date date2) 
Run Code Online (Sandbox Code Playgroud)


小智 8

使用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
Run Code Online (Sandbox Code Playgroud)


小智 7

我做了如下工作:(当前日期没有时间戳)

SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date today = dateFormat.parse(dateFormat.format(new Date()));
Run Code Online (Sandbox Code Playgroud)