如何获得当前时间,因为此代码正在给予(时间 - > 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);
答案 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
。