使用midp/blackberry将秒数转换为格式化字符串

blu*_*sky 2 blackberry midp java-me

我正在尝试使用midp将秒数转换为格式化字符串

下面是我正在使用的代码,问题是当我在设备(BlackBerry)上运行时,会追加2小时.所以 - formatSecondsAsDuration(1000)返回"00:02:01"我期待的是"00:00:01"

我认为这是因为SimpleDateFormat使用我的语言环境?我无法使用方法setTimeZone将时区设置为UTC,我认为可以解决问题.

public static String formatSecondsAsDuration(long second) {

    Date date = new Date(second);

     return new SimpleDateFormat("HH:mm:ss").format(date);

}
Run Code Online (Sandbox Code Playgroud)

我已经问了一个类似的问题 - 使用JDK1.4转换int val来格式化"HH:MM:SS"但是后来发现它并不完全合适

Sco*_*t W 5

什么是非常简单的事情:

public static String formatSecondsAsDuration(long seconds) {
    long hour = seconds / 60 / 60;
    long min = (seconds / 60) - (hour * 60);
    long sec = seconds - (min * 60) - (hour * 60 * 60);

    return (hour < 10 ? "0" : "") + hour + ":" + 
           (min < 10 ? "0" : "") + min + ":" +
           (sec < 10 ? "0" : "") + sec;
}
Run Code Online (Sandbox Code Playgroud)

只要确保你实际传递秒数(如参数名称所示),否则修改上面的代码来处理毫秒,如果那是你真正需要的.

编辑:我今天刚试过这个方法看起来它完全符合你想要的并且已经内置到BB API:DateTimeUtilities.formatElapsedTime()