java与System.currentTimeMillis()有关,改错

class Time {

long hour,minute,second;
Time()
{
long millis = System.currentTimeMillis();
hour = getHour(millis);
minute = getMinute(millis);
second = getSecond(millis);

}
long getSecond(long millis)
{
long seconds = millis/1000%60;
return seconds;
}
long getMinute(long millis)
{
long minutes = millis/1000/60%60;
return minutes;
}
long getHour(long millis)
{
long hours = (millis/1000/60/60)%24;
return hours;
}
void showTime()
{
System.out.println("the time is "+hour+":"+minute+":"+second);
}
}

主方法:
public class TextTime {
public static void main(String[] args) {
Time time1 = new Time();
time1.showTime();
}
}

可是我发现显示的时间跟现在的时间不对,
minute和second是对的,hour不对,
能帮我看下哪错了吗?

1, java.lang.System.currentTimeMillis(),它返回从 UTC 1970 年 1 月 1 日午夜开始经过的毫秒数

2, UTC是协调世界时(Universal Time Coordinated)英文缩写, UTC与格林尼治平均时(GMT, Greenwich Mean Time)一样,都与英国伦敦的本地时相同。

所以上述代码获取的是GMT+0的小时数。而中国在GMT+8,也就是加上8,就是中国的时间了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-06
long millis=1346896241575l;
long day=millis/(24*60*60*1000);
long hour=(millis/(60*60*1000)-day*24);
long min=((millis/(60*1000))-day*24*60-hour*60);
long s=(millis/1000-day*24*60*60-hour*60*60-min*60);
System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒");
求最佳......