【发布时间】:2013-01-25 10:36:59
【问题描述】:
我想将长值转换为格式化时间。 我使用的代码:
long startTimeInSeconds = 60*60*1000*sH + 60*1000*sM + sS*1000 + sL;
SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm:ss,SSS");
Date start= new Date(SU.startTime);
StartTime = dateFormat.format(start);
这里 sH sM .. 是小时分钟 .. 来自字符串,格式如下:"hh:mm:ss,SSS"。SU.startTime 是 startTimeInSeconds。StartTime 是一个字符串。
当我显示 StartTime 时,它没有给我正确的时间。
例如,当startTimeInSeconds 是2510823 时,它必须是0:41:50,823 但我得到1:41:50,823。
我不知道我做错了什么,如果我显示小时分钟......像这样:
int hours = (int) (SU.startTime / (60 * 60 * 1000));
然后我得到正确的值。
有谁知道这个问题的解决方案是什么??
【问题讨论】:
-
日期包括一个时区 - 例如,如果您的时区为 GMT + 1(或 -1,不确定),它将显示 1:41 而不是 0:41。
-
@assylias 你又住在哪里。 ;)
-
可能是这个问题,我的 time zome 是 gmt +1,但是如果我设置为 gmt,小时是 12,gmt-1 的时间是 11,在 +1 上是 1,但是哪里是零?:)
-
@executioner:您使用的是
hh,它给出了 12 小时制。如果你想要 24 小时制(它会给出 00),你需要HH而不是hh。 (我已将其编辑到我的答案中。)