我的Java开发学习之旅------>工具类:将播放器的进度值转换成相应的时间格式

2308人阅读 评论(0) 收藏 举报
分类:

   

     在我的博客《我的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

====================================================================================


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1675905次
    • 积分:19874
    • 等级:
    • 排名:第409名
    • 原创:358篇
    • 转载:109篇
    • 译文:0篇
    • 评论:871条
    感谢您为博客进行打赏
      支付宝&微信支付二维码
      支付宝&微信支付
    站长统计
    友情链接
    博客专栏
    最新评论