0

我如何获得当前时间,因为此代码给出(时间-->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);
4

3 回答 3

1

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

而是使用Joda Time库中的这个LocalTime

注意:您在代码中所做的是首先将Date对象格式化为 a String,然后再次将其解析回 a Date,丢弃日、月、年部分。您最终得到的是一个Date对象,该对象设置为自 01-01-1970, 00:00:00 GMT 以来的小时数、分钟数、秒数和毫秒数。

于 2012-10-17T13:23:16.297 回答
0

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

于 2012-10-17T13:29:15.817 回答
0
use DateFormat timeFormat = new SimpleDateFormat(); 

代替

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

问题在于格式。你没有提供日期,年份外野手,这就是它这样做的原因。或者您可以使用正确的格式:

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.

于 2012-10-17T13:31:50.490 回答