我正在尝试使用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);
}
我已经问了一个类似的问题 - Convert int val to format "HH:MM:SS" using JDK1.4但后来发现并不完全合适
答案 0 :(得分: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;
}
确保实际传递秒数(如参数名称所示),或者修改上面的代码以处理毫秒,如果这是你真正需要的。
修改强>: 我今天刚试过这个方法看起来它完全符合你想要的并且已经内置到BB API中:DateTimeUtilities.formatElapsedTime()