一起Talk Android吧(第五百四十九回:毫秒时间转换为日期时间)


各位看官们大家好,上一回中咱们说的例子是"如何创建垂直版SeekBar",本章回中介绍的例子是" 毫秒时间转换为日期时间"。闲话休提,言归正转,让我们一起Talk Android吧!

概念介绍

本章回中说的毫秒时间是指通过System.currentTimeMillis()方法获取的时间,它的时间单位是毫秒,因此我们称它为毫秒时间,也有些地方叫时间戳,叫法不同,本质相同。而日期时间是指年,月,日,时,分,秒这种格式的时间。本章回将介绍如何把毫秒时间转换成日期时间。

转换方法

格式化

我们首先想到的方法是创建一个Date类型的对象,然后创建日期时间格式,比如时分秒,然后再使用日期格式来格式化Date对象,经过代码验证后发现,该方法得到的日期时间是基于1970年计算的,它得到的是从1970开始的日期时间。而我们想要的是日期时间的间隔,比如给了一个毫秒值,把它转换成x天x时x分x秒,这里的x是计算后后的数值,比如19天5时,这种日期时间表示19天5小时,而不是1980-3-5这种日期,它表示1980年3月5日。

作差法

我们准备使用作差法来计算日期时间,其思路就是把毫秒时间转换为革个时间单位,然后减去该单位上一级时间单位的时间,比如我们把时间转换为分钟,然后减去小时中包含的分钟和天中包含的分钟,这样就得到了分钟数。这里面天和小时是分钟的上一级时间单位。如果大家不理解的话可以查看示例代码。

示例代码

        long temp = 1000*60*60*24*3;
//        DateFormat formatter = new SimpleDateFormat("HH:mm:ss");
        DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
        Date date = new Date(TimeUnit.MILLISECONDS.toMillis(temp));
        String formattedTime = formatter.format(date);
        System.out.println(formattedTime);

        temp = 1000*60*60*24*0 + 1000*60*60*23 + 1000*60*44 + 1000*55;

        long days = TimeUnit.MILLISECONDS.toDays(temp);
        long hours = TimeUnit.MILLISECONDS.toHours(temp) - TimeUnit.DAYS.toHours(days);
        long minutes = TimeUnit.MILLISECONDS.toMinutes(temp) - TimeUnit.DAYS.toMinutes(days) - TimeUnit.HOURS.toMinutes(hours);
        long seconds = TimeUnit.MILLISECONDS.toSeconds(temp) - TimeUnit.DAYS.toSeconds(days) - TimeUnit.HOURS.toSeconds(hours) - TimeUnit.MINUTES.toSeconds(minutes);


        /*
        long hours = TimeUnit.MILLISECONDS.toHours(temp) - TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(temp));
        long minutes = TimeUnit.MILLISECONDS.toMinutes(temp) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(temp));
        long seconds = TimeUnit.MILLISECONDS.toSeconds(temp) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(temp));
         */

        System.out.println("day: "+days+" HH: "+hours+" MM: "+minutes+" SS: "+seconds);

在示例代码中,我们演示了格式化转换方法和作差转化方法的代码,编译并且运行上面的程序可以得到以下结果:

1970-01-04 00:00:00
day: 0 HH: 23 MM: 44 SS: 55

看官们,关于"毫秒时间转换为日期时间"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值