如何创建没有时间戳的java日期对象

Dha*_*ram 2 java timezone date simpledateformat

我想创建一个没有TimeZone的Date对象(例如:) 2007-06-21.这可能吗?

当我使用以下方法打印时Thu Jun 21 00:00:00 GMT 2007

SimpleDateFormat  sdf       = new SimpleDateFormat("yyyy-MM-dd");

TimeZone          timeZone  = TimeZone.getTimeZone("GMT");
timeZone.setDefault(timeZone);
sdf.setTimeZone(timeZone);

Date              pickUpDate = sdf.parse("2007-06-21");
System.out.println(pickUpDate);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

如果要格式化日期,则需要使用DateFormat或类似的东西.一个Date刚刚的时间瞬间-自Unix纪元的毫秒数.它不知道时区,日历系统或格式.该toString()方法始终使用系统本地时区,并始终以默认方式对其进行格式化.从文档:

将此Date对象转换为表单的String:

dow mon dd hh:mm:ss zzz yyyy

所以它的行为完全符合记录.

你已经有一个DateFormat正确的格式,所以你只需要调用format它:

System.out.println("pickUpDate" + sdf.format(pickUpDate));
Run Code Online (Sandbox Code Playgroud)

当然,在你的样本中它没有多大意义,因为你只是解析它 - 但可能你通常会先将日期传递给它.

请注意,如果这是与数据库的交互,最好不要将其作为字符串传递.在尽可能多的时间内将值保持为"本机"表示,并使用类似的PreparedStatement.setDate方式将其传递给数据库.

顺便说一句,如果你能有可能改变使用约达时间或用Java 8新的日期/时间API( java.time.*),你会拥有它与任何日期/时间相关的更加平滑的时间.该Date/ CalendarAPI是真正可怕的.