【发布时间】:2016-04-01 18:43:03
【问题描述】:
我的代码中似乎存在逻辑错误。现在时间是:14:38,但是 我的代码是 18:38。我知道有一个日历类我可以使用,但我想 知道为什么这段代码是错误的。
代码如下:
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);
}
}
【问题讨论】:
-
你在哪个时区?
System.currentTimeMillis()返回自 1.1.1970 UTC 以来的毫秒数。 -
我在美国。东部时间
-
不错!所以需要做更多的计算才能把它送到 ET
-
正如 f1sh 已经评论的那样,
System.currentTimeMillis()为您提供了一个相对于UTC的值偏移量(EST 是 UTC-5,EDT 是 UTC-4)。 -
请注意此处日期格式化程序中 Java 语言环境的使用:stackoverflow.com/questions/4594519/… 您的语言环境用于告诉其他 Java 代码您在 EST 中。