代码之家  ›  专栏  ›  技术社区  ›  Kevin Bradshaw

时间问题。。以及如何在java中操作它

  •  0
  • Kevin Bradshaw  · 技术社区  · 14 年前

    我有一个关于在java中使用时间的问题,更具体地说是在Android中。

    所以我的代码如下:

    Calendar now = Calendar.getInstance();  
    long milliseconds = now.getTimeInMillis();  
    long since_midnight = milliseconds%(86400000);  
    long checkpoint = (milliseconds - since_midnight); 
    

    但是,当我使用以下方法将checkpoint变量转换为date时:

    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");  
    last_logged_text=formatter.format(checkpoint);
    

    我得到了一个对应于今天凌晨1点的时间表示。

    我意识到这与夏令时有关,但我不确定如何解决它。

    谢谢

    基夫

    1 回复  |  直到 14 年前
        1
  •  1
  •   pauljwilliams    14 年前

    这是因为纪元和现在有不同的时区,有效地,多亏了DST,正如你所说的。

    Calendar midnight = Calendar.getInstance ();
    
    midnight.set (Calendar.HOUR_OF_DAY, 0);
    midnight.set (Calendar.MINUTE, 0);
    midnight.set (Calendar.SECOND, 0);
    midnight.set (Calendar.MILLISECOND, 0);
    
    long millisSinceMidnight = System.currentTimeMillis() - midnight.getTimeInMillis();