Aba*_*unt 5 java format time timespan simpledateformat
我试图以"days:hours:minutes:seconds"的格式输出"900,000毫秒",我现在正在使用此代码:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd:HH:mm:ss");
String formatted = simpleDateFormat.format(900000)
Run Code Online (Sandbox Code Playgroud)
900,000毫秒应该是15分钟,所以我希望它返回
00:00:15:00
Run Code Online (Sandbox Code Playgroud)
或类似的东西......
但无论如何它都会回归
01:01:15:00
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我为什么以及如何解决它?
我认为它必须对时区做一些事情,但它也增加了1天的天数......?
提前致谢!
Ada*_*yga 11
Day是01因为它代表1月1日.小时01可能与您的时区有关.试试这个:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd:HH:mm:ss");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String formatted = simpleDateFormat.format(900000);
Run Code Online (Sandbox Code Playgroud)
你使用它会出错 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);
}
Run Code Online (Sandbox Code Playgroud)
这会得到你
15 min, 0 sec
只需格式化您的心脏内容并添加天和小时......
传递给SimpleDateFormat的值900,000是一个时间点... 1970年1月1日15:00,格林尼治标准时间00:00:00或者:
1970年1月1日,格林尼治标准时间00:15:00
在您所在时区的1970年的这个日期和时间,这一天是1,小时是1.