Java当前时间(逻辑错误)时区:美国东部时间

时间:2016-04-01 18:43:04

标签: java time

我的代码中似乎有一个逻辑错误。现在的时间是: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);

    }

 }

1 个答案:

答案 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();