当前时间/日期代码错误

时间:2012-10-17 13:19:12

标签: java hibernate

如何获得当前时间,因为此代码正在给予(时间 - > Thu Jan 01 05:56:27 ACT 1970)?

DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss.SS"); 
         Date time = new Date(); 
         String currentTime=timeFormat.format(time);
         time=timeFormat.parse(currentTime);
         System.out.println("Time-->"+time);
         salesOrder.setOrderTime(time);

3 个答案:

答案 0 :(得分:1)

java.util.Date不适合仅存储时间(小时,分钟,秒,毫秒)。类Date是一个时间戳,它包含自格林威治标准时间01-01-1970 00:00:00以来的毫秒数。

使用Joda Time库中的LocalTime代替。

注意:您在代码中执行的操作是先将Date对象格式化为String,然后再将其解析回Date,丢弃一天,一个月,年份。你最终得到的是一个Date对象,它设置为自格林威治标准时间01-01-1970 00:00:00以来的小时,分​​钟,秒和毫秒。

答案 1 :(得分:0)

您的格式仅包含小时,分钟和秒。只给出一天中没有日期组件的时间,DateFormat.parse()不会填写当前日期;它回溯到系统的时代,“时间零”,即1970年1月1日。如果你想要一个可以转回Date对象的日期字符串,你需要包括年,月和日作为小时。

答案 2 :(得分:0)

use DateFormat timeFormat = new SimpleDateFormat(); 

而不是

DateFormat timeFormat = new SimpleDateFormat("HH:MM:ss:SS");

问题在于格式化。你没有提供Day,year fieldr,这就是为什么它会这样做。或者您可以使用正确的格式:

DateFormat timeFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");

编辑:

试试这个:

 Calendar c = Calendar.getInstance(); 
  c.setTime(time);
  System.out.println(c.get(Calendar.YEAR)+ "  "+c.get(Calendar.MONTH)+ " "+ c.get(Calendar.DAY_OF_MONTH));

time中设置Calendar object的时间是未使用simpleDateFormat解析/格式化的时间。 从calendar object开始,您可以按照自己喜欢的方式获取月,日,年,或者只需拨打c.getTime()即可获得Date object