我有方法
public static void testDateFormat() throws ParseException {
DateFormat dateFormat=new SimpleDateFormat("HH:mm:ss");
Date hora;
hora=dateFormat.parse("00:00:01");
System.out.println(hora.getHours()+" "+hora.getMinutes());
System.out.println("Date "+hora);
System.out.println("Seconds "+TimeUnit.MILLISECONDS.toSeconds(hora.getTime()));
}
输出
0 0
Date Thu Jan 01 00:00:01 COT 1970
Seconds 18001
为什么秒数是18001?我希望得到1秒。
答案 0 :(得分:5)
因为您的Date
的{{1}}不是UTC。事实上,它是COT - 这是UTC-5。 5 * 60 * 60是18000(或你的结果,再加上一秒)。要获得您期望的价值,您可以致电DateFormat#setTimeZone(TimeZone)
,例如
TimeZone
输出正如您所料。
修改强>
正如评论中所述,每个Javadoc都有Date#getTime()
返回自此
DateFormat dateFormat=new SimpleDateFormat("HH:mm:ss"); dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); // <-- Add this. Date hora=dateFormat.parse("00:00:01"); System.out.println(hora.getHours()+" "+hora.getMinutes()); System.out.println("Date "+hora); System.out.println("Seconds "+TimeUnit.MILLISECONDS.toSeconds(hora.getTime()));
对象表示的1970年1月1日00:00:00 GMT以来的毫秒数。
你的Date
Date
相当于
Thu Jan 01 00:00:01 COT 1970
因此你得到5小时的差异。
答案 1 :(得分:0)