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

    {"options": { "almostdone":"0", "backup_searchEngines":" ...

  2. iOS 汉字转拼音 PinYin4Objc

    PinYin4Objc 是一个效率很高的汉字转拼音类库,支持简体和繁体中文.有以下特性:1.效率高,使用数据缓存,第一次初始化以后,拼音数据存入文件缓存和内存缓存,后面转换效率大大提高:2.支持自定义 ...

  3. 【spring boot】12.spring boot对多种不同类型数据库,多数据源配置使用

    2天时间,终于把spring boot下配置连接多种不同类型数据库,配置多数据源实现! ======================================================== ...

  4. EasyMvc入门教程-基本控件说明(3)时间线

    我们有时候经常看到如下的页面: 或者快递物流信息图标,那么利用EasyMvc如何实现呢?很简单,看下面的例子: @{ var data=new List<TimeLineItem>() { ...

  5. 细微之处见功夫!这5点让Wish3D Earth与众不同

    产品的体验是全方位的,任何一点,都可能决定成败.细微之处见功夫,5个细节,告诉你Wish3D Earth为什么与众不同. 中科图新最新发布的Wish3D Earth,是基于WebGL技术的网页版三维地 ...

  6. 【音乐App】—— Vue-music 项目学习笔记:歌单及排行榜开发

    前言:以下内容均为学习慕课网高级实战课程的实践爬坑笔记. 项目github地址:https://github.com/66Web/ljq_vue_music,欢迎Star. 歌单及详情页 排行榜及详情 ...

  7. 【前端GUI】——对一些优秀网页设计作品的分析&心得

    前言:优秀的网站设计作品都有一些相似的地方,即使是美学,也一定会遵循着一定的规律. ONE 这一组,属于同类. 主题:点心. 背景:卡通动物形象. 色调:柔和,甜美. 点线面布局: 在这两个页面中,点 ...

  8. iOS开发数据持久化技术02——plist介绍

    有疑问的请加qq交流群:390438081 我的QQ:604886384(注明来意) 微信:niuting823 1. 简单介绍:属性列表是一种xml格式的文件.扩展名.plist: 2. 特性:pl ...

  9. Ant Design 3.0 使用案例

    代码地址如下:http://www.demodashi.com/demo/12309.html 本文适合对象 有过React使用经验. 有过webpack使用经验. 了解node. DEMO使用方式 ...

  10. 【Android实战】Gallary+ImageSwicther图片查看器

    仿照如今各大新闻站点图片新闻的浏览模式,上面展示详细图片(ImageSwitch),以下是能够滑动的小图片(Gallery). 当中须要注意的是ImageSwitch须要定义一个工厂返回的组件,而且能 ...