我正在尝试以“days:hours:minutes:seconds”格式输出“900,000毫秒”,我现在正在使用此代码:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd:HH:mm:ss");
String formatted = simpleDateFormat.format(900000)
900,000毫秒应该是15分钟,所以我希望它返回
00:00:15:00
或类似的东西......
但无论如何它会返回
01:01:15:00
有人可以告诉我为什么以及如何解决它?
我认为它必须对时区做一些事情,但它也增加了1天......?
提前致谢!
答案 0 :(得分:11)
Day是01因为它代表1月1日。小时01可能与您的时区有关。 试试这个:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd:HH:mm:ss");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String formatted = simpleDateFormat.format(900000);
答案 1 :(得分:8)
使用SimpleDateFormat
SimpleDateFormat
用于获取不计时的DATE实例
您应该使用TimeUnit
这是一个例子
public static void main(String[] args) throws Exception {
long millis = 900000;
String s = String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes(millis),
TimeUnit.MILLISECONDS.toSeconds(millis)
- TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
System.out.println(s);
}
这会让你
15 min, 0 sec
只需格式化您的心脏内容并添加天数和小时数......
答案 2 :(得分:7)
传递给SimpleDateFormat的值900,000是一个时间点... 1970年1月1日15:00,格林尼治标准时间00:00:00或者:
1970年1月1日,格林尼治标准时间00:15:00
在您所在时区的1970年这个日期和时间,这一天是1,小时是1。
答案 3 :(得分:0)
答案是对的。 SimpleDate.format(900000)语句格式化时间900000毫秒,超过纪元,这将是第一个小时的15分钟