【问题标题】:Getting wrong time on converting milliseconds to hours, minutes, seconds [closed]将毫秒转换为小时、分钟、秒时出现错误的时间[关闭]
【发布时间】:2014-05-17 09:43:21
【问题描述】:

我知道我的问题已经被问过很多次了,但我又写了一遍,因为我无法解决我的问题。

我想以毫秒(我想是这样)表示的时间转换为小时和分钟。 我知道目标是什么,我的意思是正确的小时和分钟,但我无法得到它。

我试过了:

    long elevenPASTEleven= 33240000;  // 11:11
    Date date = new Date(elevenPASTEleven);
    DateFormat formatter = new SimpleDateFormat("HH:mm:ss:SSS");
    String dateFormatted = formatter.format(date);
    System.out.println(dateFormatted);

输出是:

    10:14:00:000

我实际上无法理解错误在哪里。

代码中的 long 值是从我解析的远程网站检索的:

    Number value: 33240000

所以我想将此值转换为人类可读的时间,但我不能。

请给我一些建议好吗?

提前谢谢你!

【问题讨论】:

  • 你是怎么断定现在是 11:11 的? 11*60*60*1000 > 33240000.
  • 因为当我通过wireshark嗅探连接时,我得到了33240000的值,并且在应用程序上得到了11:11
  • 另一个例子是 12.04 转换为 31560000 ...我不明白为什么 11.11大于 12.04
  • 所以后面的时间值更小?
  • 这个问题目前无法回答,因为我们不知道将时间映射到这些值的规则是什么......

标签: java android timestamp java-time


【解决方案1】:

试试这个方法将毫秒转换为小时、分钟和秒

long millies = System.currentTimeMillis();
long hour = TimeUnit.MILLISECONDS.toHours(millies);
long minutes = TimeUnit.MILLISECONDS.toMinutes(millies);
long seconds = TimeUnit.MILLISECONDS.toSeconds(millies);

如果你想格式化你的时间

public String getDurationString(int seconds) 
{
    int hours = seconds / 3600;
    int minutes = (seconds % 3600) / 60;
    seconds = seconds % 60;

    return twoDigitString(hours) + ":" + twoDigitString(minutes) + ":" + twoDigitString(seconds);
}

private String twoDigitString(int number) 
{
    if (number == 0)
    {
       return "00";
    }

    if (number / 10 == 0) 
    {
       return "0" + number;
    }

return String.valueOf(number);
}

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    我已经解决了“问题”!

    是我没有把握好时机。

    33240000对应10:14NOT对应11:11

    很抱歉问你这个没用的问题,问题出在我的解释上。

    再次抱歉,还是谢谢你的帮助!!!

    【讨论】:

      猜你喜欢
      • 2016-06-29
      • 2018-11-16
      • 2012-09-27
      • 2016-07-18
      • 2013-01-12
      • 1970-01-01
      • 2010-10-02
      • 2011-06-13
      相关资源
      最近更新 更多