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

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

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

  1. 我的Java开发学习之旅------>工具类:Java获取字符串和文件进行MD5值

    ps:这几天本人用百度云盘秒传了几部大片到云盘上,几个G的文件瞬秒竟然显示"上传成功"!这真让我目瞪口呆,要是这样的话,那得多快的网速,这绝对是不可能的,也许这仅是个假象.百度了一 ...

  2. 我的Java开发学习之旅------>工具类:Java使用正则表达式分离出字符串中的中文和英文

    今天看到一个工具类使用正则表达式将一大段字符串中的中文和英文都分离出来了,在此记录一下,读者可以收藏! import java.util.ArrayList; import java.util.Col ...

  3. 我的Java开发学习之旅------>二进制、八进制、十进制、十六进制之间转换

    一. 十进制与二进制之间的转换  (1) 十进制转换为二进制,分为整数部分和小数部分  ① 整数部分  方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权 ...

  4. 我的Java开发学习之旅------>Java 格式化类(java.util.Formatter)基本用法

    本文参考: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html http://www.blogjava.net/ ...

  5. 我的Java开发学习之旅------&gt;Base64的编码思想以及Java实现

    Base64是一种用64个字符来表示随意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,由于二进制文件包括非常多无法显示和打印的字符.所以,假设要让记事本这种 ...

  6. 我的Java开发学习之旅------>Base64的编码思想以及Java实现

    Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的 ...

  7. 我的Java开发学习之旅------>Java NIO 报java.nio.charset.MalformedInputException: Input length = 1异常

    今天在使用Java NIO的Channel和Buffer进行文件操作时候,报了java.nio.charset.MalformedInputException: Input length = 1异常, ...

  8. JAVA基础学习day18--常用工具类

    一.System 1.1.概述 System 类包含一些有用的类字段和方法.它不能被实例化. 在 System 类提供的设施中,有标准输入.标准输出和错误输出流:对外部定义的属性和环境变量的访问:加载 ...

  9. JAVA基础学习day17--集合工具类-Collections

    一.Collection简述 1.1.Collection与Collections的区别 Collections是集合的静态工具类 Collection:是集合的顶级接口 二.Sort 2.1.sor ...

随机推荐

  1. luogu P3147 [USACO16OPEN]262144

    题目描述 Bessie likes downloading games to play on her cell phone, even though she doesfind the small to ...

  2. React 入门之路

    React React简介 是由Facebook公司推广的一套框架,已经应用instagram等产品 React就是为了提供应用程序性能而设计的一套框架 在angular中,对dom提供了一些指令,让 ...

  3. 终端应用变身文件 MD5/SHA1 校验工具

    担心下载的文件被恶意篡改?没有找到 Mac 平台文件校验工具?其实 Mac OS X 系统中已经内置了“文件 MD5/SHA1 校验工具”,它就藏身于终端(Terminal)应用中! 打开终端应用,输 ...

  4. ADO.NET:连接数据字符串

    ylbtech-ADO.NET:ADO.NET-Oracle|SQLServer|MySql|Access|Excel-dddd ADO.NET:连接数据字符串 1.A,SqlServer返回顶部 1 ...

  5. ubuntu下apache添加https支持

    http是无状态,不安全的连接.而https是通过ssl加密的http连接,可靠性更强. 确保openssl安装完成,用openssl来产生和签署证书,可以自己签署,但是不安全,建议用证书机构颁发的证 ...

  6. ZRender实现粒子网格动画实战

    注:本博文代码基于ZRender 3.4.3版本号开发,相应版本号库地址:ZRender 库. 效果 实现分析 通过上面显示的效果图,能够看出,这样的效果就是在Canvas中生成多个可移动的点,然后依 ...

  7. Yii2 数据操作Query Builder

    转载地址: http://blog.csdn.net/hzqghost/article/details/44117081 Yii2 数据操作Query Builder 分类: Yii22015-03- ...

  8. C 语言实例

    C 语言实例 C 语言实例 - 输出 "Hello, World!" C 语言实例 - 输出整数 C 语言实例 - 两个数字相加 C 语言实例 - 两个浮点数相乘 C 语言实例 - ...

  9. Java数组去掉反复的方法集

    经经常使用到,有时候不仅仅是简单的基本类型,那种能够用set集合去重,好多时间用到的是我们自己定义的类型,以下举个样例(我这儿就那int举例了): 方法一. 这样的类似与选择排序算法,首先我们取i值, ...

  10. HDoj-1233-还是畅通project-prim算法

    还是畅通project Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...