在我的博客《我的Java开发学习之旅------>Java 格式化类(java.util.Formatter)基本用法,地址:http://blog.csdn.net/ouyang_peng/article/details/16355237》中,就使用过了过了Formatter将播放器的进度值之转换为相应的时间,下面这个工具类也可以实现同样的效果。
/** * 得到(当前播放时间/总播放时间)的格式如:<br/> * 00:00:08/00:01:40 <br/> * 00:03:00/00:30:00 <br/> * @author ouyangpeng (http://blog.csdn.net/ouyang_peng) */ public class TimeUtil { /** * 格式化时间单元(时、分、秒) * 小于10的话在十位上补0,如传入2的话返回02,传入12的话返回12 * @param time * 播放时间 * @return 格式化后的时间,如(02) */ public static String formatTimeUnit(int time) { return time < 10 ? "0" + time : "" + time; } /** * @param format_time * @return (时:分:秒)格式的时间格式,如(00:03:00) */ public static String formatTimeString(int format_time) { String hours=formatTimeUnit(format_time / 3600); //时 String minutes=formatTimeUnit((format_time / 60) % 60); //分 String seconds=formatTimeUnit(format_time % 60); //秒 return hours + ":" + minutes+ ":" + seconds; } /** * @param current_time * 当前播放时间 * @param total_time * 总播放时间 * @return 当前播放时间/总播放时间,如(00:03:02/00:31:52) */ public static String getFormatTime(int current_time, int total_time) { current_time = Math.abs(current_time); // 得到当前播放时间的绝对值 total_time = Math.abs(total_time); // 得到总播放时间的绝对值 return formatTimeString(current_time) + "/" + formatTimeString(total_time); } }
下面测试一下上面的工具类是否有效。
public class Test { public static void main(String[] args) { System.out.println(TimeUtil.formatTimeString(180)); System.out.println(TimeUtil.getFormatTime(8, 100)); System.out.println(TimeUtil.getFormatTime(182, 1912)); } }
测试结果如下:
00:03:00 00:00:08/00:01:40 00:03:02/00:31:52
ps:关于上面的formatTimeString方法,可以使用下面方法代替,其实是一样的。
class TimeUtils{ private StringBuilder sFormatBuilder = new StringBuilder(); private Formatter sFormatter = new Formatter(sFormatBuilder, Locale.getDefault()); private final Object[] sTimeArgs = new Object[3]; public String makeTimeString(int secs) { String durationformat = "%1$02d:%2$02d:%3$02d"; sFormatBuilder.setLength(0); Object[] timeArgs = sTimeArgs; timeArgs[0] = secs / 3600; timeArgs[1] = (secs % 3600) / 60; timeArgs[2] = (secs % 3600 % 60) % 60; return sFormatter.format(durationformat, timeArgs).toString().trim(); } }
调用TimeUtis的makeTimeString()方法也可以返回类似的字符串。
public class Test { public static void main(String[] args) { System.out.println(new TimeUtils2().makeTimeString(21423)); } }
运行结果如下:
05:57:03
====================================================================================
作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/ouyang_peng
====================================================================================