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

   

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

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


转载于:https://www.cnblogs.com/ouyangpeng/p/8538163.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值