我有毫秒值,想以 hh:mm:ss
格式显示从当前毫秒值减去 5 分钟的时间。
代码
String str = String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours((cal.getTimeInMillis()-300000)),
TimeUnit.MILLISECONDS.toMinutes(cal.getTimeInMillis()-300000) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(cal.getTimeInMillis()-300000)),
TimeUnit.MILLISECONDS.toSeconds(cal.getTimeInMillis()-300000) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(cal.getTimeInMillis()-300000)));
Toast.makeText(getApplicationContext(), "Alarm Set."+str, Toast.LENGTH_LONG).show()
现在输出
闹钟设置。 386467:25:00
需要输出
闹钟设置。 07:25:00
如您所见,minutes
和 seconds
正在正常检索,但 hours
存在一些问题。
附言
1.我引用了this post .他们说它工作正常。但不知道为什么在我的情况下不行。
2.我确定我想获得的小时值是什么,即 07
,因为我已经使用 Calendar.HOUR
设置了该值,如果我使用 cal.get(Calendar.HOUR)
.cal 当然是 Calendar
类的对象。
替代解决方案
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
String str1 = sdf.format(new Date(cal.getTimeInMillis()-300000));
Toast.makeText(getApplicationContext(), "Alarm Set."+str1, Toast.LENGTH_LONG).show();
最佳答案
检查此解决方案。更优雅
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss", Locale.getDefault());
String str = sdf.format(new Date(System.currentTimeMillis()));
Toast.makeText(getApplicationContext(), "Alarm Set."+str, Toast.LENGTH_LONG).show()
关于java - 将毫秒格式化为 hh :mm:ss format,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21482969/