博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】使用DateFormat把时间长度格式化为"时:分:秒"格式--不错
阅读量:7049 次
发布时间:2019-06-28

本文共 2498 字,大约阅读时间需要 8 分钟。

原文网址:http://ssd910.blog.163.com/blog/static/238767972010112214114201/

经常在系统中显示时间长度,基本上每次都是显示秒数,客户觉得按时分秒("HH:mm:ss")的格式显示比较明了,一般开发人员都是自己去计算小时是多少?分钟是多少...,其实可以用DateFormat来格式这个显示方式。示例代码如下:示例:

计算某人总的登陆时间

登陆时间是10:12:14
结束时间是15:20:35
示例代码:
  Calendar c1 = new GregorianCalendar(2007, 1, 16, 10, 12, 14);
  Calendar c2 = new GregorianCalendar(2007, 1, 16, 15, 20, 35);

  SimpleDateFormat formatter= new SimpleDateFormat("HH:mm:ss");

  // 设置格式化器的时区为格林威治时区,否则格式化的结果不对,中国的时间比格林威治时间早8小时,比如0点会被格式化为8:00

  formatter.setTimeZone(TimeZone.getTimeZone("GMT+0:00"));

  long l = c2.getTimeInMillis() - c1.getTimeInMillis();

  System.out.println("秒数:" + l);
  System.out.println("时分秒:" + formatter.format(l));

输出结果:

毫秒数:18501000
时分秒:05:08:21

注销设置TimeZone,输出结果:

毫秒数:18501000
时分秒:13:08:21

上面的代码不能格式化年、月、日的长度,只能是时间,因为java的时间是从1970年1月1日开始的。

若需要年月日,则只能自己去年月日字段拼装,如:

        StringBuffer result = new StringBuffer();
        // 添加年-月-日,可以自己判断补0,比如年份为4位获两位,月份是两位,天数是两位
        result.append(calendar.get(Calendar.YEAR) - 1970).append("-");
        result.append(calendar.get(Calendar.MONTH)).append("-");
        result.append(calendar.get(Calendar.DAY_OF_MONTH) - 1).append(" ");

Android SimpleDateFormat转换时间 12,24时间格式

原文网址:http://blog.csdn.net/zz_mm/article/details/9302965

在使用SimpleDateFormat时格式化时间的 yyyy.MM.dd 为年月日而如果希望格式化时间为12小时制的,则使用hh:mm:ss 如果希望格式化时间为24小时制的,则使用HH:mm:ss

代码如下:

  1. Date d = new Date();  
  2.         SimpleDateFormat ss = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//12小时制  
  3.         System.out.println(ss.format(d));  
  4.   
  5.         Date date = new Date();  
  6.         SimpleDateFormat sdformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//24小时制  
  7.         String LgTime = sdformat.format(date);  
  8.         System.out.println(LgTime);  
  9.   
  10.   
  11. //结果为  
  12. 2008-05-28 01:32:54  
  13. 2008-05-28 13:32:54  

Android Java计算时间差

原文网址:http://www.ztyhome.com/android-java-shijiancha/

Android开发或者学习中,经常要求两个

比如说:

现在是 :2004-03-26 13:31:40

过去是:2004-01-02 11:30:24

我现在要获得两个日期差,差的形式为:XX天XX小时XX分XX秒

这前后时间可能是机器生成的,也可能是人工输入的,那么我们可以通过下面代码来实现

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
2  
3 try
4 {
5    Date d1 = df.parse("2004-03-26 13:31:40");
6    Date d2 = df.parse("2004-01-02 11:30:24");
7    long diff = d1.getTime() - d2.getTime();//这样得到的差值是微秒级别
8  
9    long days = diff / (1000 * 60 * 60 * 24);
10    long hours = (diff-days*(1000 * 60 * 60 * 24))/(1000* 60 * 60);
11    long minutes = (diff-days*(1000 * 60 * 60 * 24)-hours*(1000* 60 * 60))/(1000* 60);
12  
13    System.out.println(""+days+"天"+hours+"小时"+minutes+"分");
14 }
15 catch (Exception e)
16 {
17 }

在Android开发中,你可能需要记录系统运行的时间长度,那么你可以在系统启动时记录下时间,然后在你想结束的时候再记录一次时间,两次时间记录值作差。具体可参考

得到的差值也是微秒级别的,利用类似的方法,得到秒、分、时、天即可。

 

你可能感兴趣的文章
深入理解JavaScript错误和堆栈追踪
查看>>
正确看待云服务用户面临的数据安全挑战
查看>>
DevOps成功实施:变化贯穿始终
查看>>
企业IT运维效率低——如何破?
查看>>
CES 2017:连接人工智能
查看>>
301与302重定向的区别有哪些
查看>>
《Oracle达人修炼秘籍:Oracle 11g数据库管理与开发指南 》一第3章 Oracle 11g数据库的安装...
查看>>
郭平:华为5G到来之前行业应做何准备
查看>>
孙宇教授:什么才是终极智能和自主系统?
查看>>
《Android的设计与实现:卷I》——第3章 3.4.4解析Service
查看>>
中菲关系大转折 对中国光伏企业而言是陷阱?
查看>>
《游戏设计师修炼之道:数据驱动的游戏设计》一1.5 漏洞的来源
查看>>
中国多项5G核心技术取得重要突破
查看>>
人工智能「风口」,先行者为什么是搜索引擎?
查看>>
苹果将成首家万亿市值公司?巴克莱并不这么看
查看>>
覆盖全国317城 北斗服务助智慧城市升级
查看>>
Neural Attention Model for Abstractive Sentence Summarization
查看>>
《R语言编程艺术》——3.5 向量与矩阵的差异
查看>>
智慧巴彦淖尔,正向我们走来
查看>>
银行间债市衍生工具扩容:新版CRM落地 参与门槛降低
查看>>