这是一个时区差异问题.
由于您只指定了分钟和秒,因此日期将在1970年1月1日00:mm:ss(mm和ss是当前时间的分钟和秒).
我将你的例子简化为:
String timeStamp = "00 00 00";
SimpleDateFormat dateFormat = new SimpleDateFormat("HH mm ss");
double hour = dateFormat.parse(timeStamp).getTime()/1000.0/60/60;
System.out.println("hour is: "+ hour);
打印出的小时数应该是GMT与当地时区的偏差.
原因是:
SimpleDateFormat是区域设置敏感的,因此dateFormat.parse(timeStamp)将返回为给定时区创建Date对象(默认为本地时区).然后getTime()从1970年1月1日午夜获得毫秒数** GMT **.因此,该值将被当地时区与GMT的距离所抵消.
如何解决:
你可以通过在调用parse之前设置dateFormat对象的时区来修复它,如下所示:
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));