java - 将毫秒格式化为 hh :mm:ss format

标签 java android date calendar timeunit

我有毫秒值,想以 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

如您所见,minutesseconds 正在正常检索,但 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/

相关文章:

java - 从 linkedin api 获取技能?

java - 检查数组中的所有值是否不相等 (java)

java.lang.IllegalArgumentException : bad base-64 when decrypting image 异常

javascript - AngularJs:在 Controller 内格式化当前日期

Android Studio中的日期和时间(科林语言)

java - 在 Javafx 中插入 Pane

java - SAP JCo3 表虽然已连接但仍为空

android - Android无法发送HTTP请求

android - 如何在 ActionBar 中引入 Swipeable Tabs?

sql - 在 SSIS 表达式中,我们如何只存储 getdate() 中的日期