【问题标题】:Android: SimpleDateFormat keeps adding 1 hour to my timeAndroid:SimpleDateFormat 不断增加我的时间 1 小时
【发布时间】:2012-04-29 17:13:41
【问题描述】:

我使用currentTimeMillis(); 来获取开始时间,然后再次使用它来获取结束时间。然后我使用 delete start from end 并获得一个值,即两者之间的持续时间。我正在使用SimpleDateFormat 使所有这些值变得漂亮和可读。唯一的事情是当我使用像 10 秒(或 300 等)这样的低值而不是完整的长数字(即 1335718053126)时,我似乎要在 01:00:10 或 01:02:12 等时间退出我的输出?事实上,如果我只是要求 SimpleDateFormat 输出一个 hh:mm:ss 值而不是 0 值,它会读取 01:00:00。

有人知道这是为什么吗?

如果其他人需要时间格式化的解决方案,可以找到这个简洁的小代码。 Source link

public String getNiceTime(long time) {     

    String format = String.format("%%0%dd", 2);
    String seconds = String.format(format, time % 60);
    String minutes = String.format(format, (time % 3600) / 60);
    String hours = String.format(format, time / 3600);
    String outPutTime =  hours + ":" + minutes + ":" + seconds;
    return outPutTime;
}

【问题讨论】:

  • 您使用的是日期,而不是时间格式。可能与夏季时间有关?
  • 我认为你是对的,你知道我可以如何改变这个时区或者我可以使用一个简单的时间格式吗?
  • 我不知道输出时间的好方法,您可能需要自己计算小时:分钟:秒。
  • 我已经设法将它设置为 UTC,但现在它设置为 12 而不是 1,这开始看起来像手动转换。我真的很想避免这种情况..
  • 我刚刚看到你的更新。是的,我想我必须这样做,但很遗憾。真的开始喜欢这种 simpledateformat 的东西了。

标签: android time simpledateformat


【解决方案1】:
mySimpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));

说明:您可能生活在 GMT+1 时区,除非您指定不同的时区,否则您的格式化程序将选择您当前的时区,因此它将 0 小时视为 GMT,并且当您处于 GMT+1 时,它会输出1 小时

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-22
    • 2014-04-18
    • 2020-09-19
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多