我的代码中似乎有一个逻辑错误。现在的时间是:14:38,但是 我的代码说18:38。我知道我可以使用Calendar类,但我想 知道为什么这段代码错了。
以下代码:
public class welcome{
public static void main(String args[]){
//get total milliseconds since 1970
long total_millisec = System.currentTimeMillis();
// compute total seconds since 1970
long total_sec = total_millisec / 1000;
//compute current second
long current_sec = total_sec % 60;
//compute total minutes since epoch
long total_mins = total_sec / 60;
//compute current minute
long current_min = total_mins % 60;
//compute total hours
long total_hours = total_mins / 60;
//compute current hour
long current_hour = total_hours % 24;
System.out.println("Time is: "+current_hour+":"+current_min+":"
+current_sec);
}
}
答案 0 :(得分:1)
执行计算时,假定System.currentTimeMillis()返回1970年1月1日午夜(即1970-01-01 00:00)与当前时间之间的差异(以毫秒为单位)。尝试评估系统中的基准日期,看看它会是什么:
System.out.println("" + new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm").format(new java.util.Date(0)));
它可能会返回1969-12-31 19:00之类的东西,这不是午夜。
System.currentTimeMillis()返回与表达式相同的内容:
long currentTime = new java.util.Date().getTime() - new java.util.Date(0).getTime();