在我的博客《我的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. 一次lenovo a390t刷机体验

    今天一朋友说自己的联想a390t手机有时候打着打着电话就没声音了,手机好像死机了一样,以前用着挺好的没什么毛病. 因为以前用刷机精灵刷过几个android手机,感觉挺简单的,只要找好对应的rom点击两 ...

  2. Scut游戏服务器引擎6.0.5.1发布

    1. 修正缓存删除时不会更新到Redis的问题 2. 修正Model组合3个以上子类时Change事件未绑定的问题 3. 修正中间层MySql与MsSql数据库Sql语句分页问题

  3. nginx +uwsgi + django配置

    一 安装 nginx 二 安装 uwsgi  ,pip install uwsgi 三 配置nginx 打开 nginx.conf文件, location / { # root html; # ind ...

  4. 研读:Shielding applications from an untrusted cloud with Haven

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdHJ1c3Ribw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  5. Web编程前端之7:web.config详解 【转】

    http://www.cnblogs.com/alvinyue/archive/2013/05/06/3063008.html 声明:这篇文章是摘抄周公(周金桥)的<asp.net夜话> ...

  6. CentOS SVN 服务器搭建

    源码目录:/home/user/project 工程名:project 工程目录:/source/svn/project 访问地址:svn://ip/project 一. 安装svn yum inst ...

  7. MYSQL索引优化思维导图

    有关索引的优化.MYSQL索引优化     文章来源:刘俊涛的博客 地址:http://www.cnblogs.com/lovebing

  8. LeetCode Subsets I& II——递归

    I Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must ...

  9. WebService中获取request对象一例

    @WebService @Service public class WeiXinWebServiceImpl implements IWeiXinWebService { @Resource priv ...

  10. Swift初窥----语法进阶

    缺省绑定(Optional Binding 自己主动置空) 通过在类型变量后,加上?,能够实现缺省绑定为nil var window: UIWindow? 就是说,假设不正确window赋值,则win ...