`
mwhgJava
  • 浏览: 94688 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

时间间隔格式化

 
阅读更多
public class DurationFormat {

    public static String format(long durationMilliseconds) {
        // milliseconds
        long iterator = durationMilliseconds;
        long milliseconds = iterator % 1000;
        // seconds
        iterator /= 1000;
        long seconds = iterator % 60;
        // minutes
        iterator /= 60;
        long minutes = iterator % 60;
        // hours
        iterator /= 60;
        long hours = iterator % 24;
        // days
        iterator /= 24;
        long days = iterator;

        StringBuilder sb = new StringBuilder(64);
        if (days != 0) {
            sb.append(days).append(days == 1 ? " day " : " days ");
        }
        if (hours != 0) {
            sb.append(hours).append(hours == 1 ? " hour " : " hours ");
        }
        if (minutes != 0) {
            sb.append(minutes).append(minutes == 1 ? " minute " : " minutes ");
        }
        if (seconds != 0) {
            sb.append(seconds).append(seconds == 1 ? " second " : " seconds ");
        }
        if ((milliseconds != 0) || (sb.length() == 0)) {
            sb.append(milliseconds).append(milliseconds == 1 ? " millisecond " : " milliseconds ");
        }
        // remove last space
        String result = sb.substring(0, sb.length() - 1);
        return result;
    }

}





用例:

public class Test {

    public static void main(String[] args) {

        System.out.println(DurationFormat.format(Duration.ofDays(1).getSeconds() * 1000));
        System.out.println(DurationFormat.format(Duration.ofDays(2).getSeconds() * 1000));
        System.out.println(DurationFormat.format(Duration.ofHours(1).getSeconds() * 1000));
        System.out.println(DurationFormat.format(Duration.ofHours(2).getSeconds() * 1000));
        System.out.println(DurationFormat.format(Duration.ofMinutes(1).getSeconds() * 1000));
        System.out.println(DurationFormat.format(Duration.ofMinutes(2).getSeconds() * 1000));
        System.out.println(DurationFormat.format(Duration.ofSeconds(1).getSeconds() * 1000));
        System.out.println(DurationFormat.format(Duration.ofSeconds(2).getSeconds() * 1000));
        System.out.println(DurationFormat.format(0));
        System.out.println(DurationFormat.format(1));
        System.out.println(DurationFormat.format(2));

        System.out.println(DurationFormat.format(10000L));
        System.out.println(DurationFormat.format(100000L));
        System.out.println(DurationFormat.format(1000000L));
        System.out.println(DurationFormat.format(10000000L));
        System.out.println(DurationFormat.format(100000000L));
        System.out.println(DurationFormat.format(1000000002L));
    }

}




效果:
1 day
2 days
1 hour
2 hours
1 minute
2 minutes
1 second
2 seconds
0 milliseconds
1 millisecond
2 milliseconds
10 seconds
1 minute 40 seconds
16 minutes 40 seconds
2 hours 46 minutes 40 seconds
1 day 3 hours 46 minutes 40 seconds
11 days 13 hours 46 minutes 40 seconds 2 milliseconds
分享到:
评论

相关推荐

    测量程序编制 - python 56格式化输出:时间日期—time模块.pptx

    时间间隔是以秒为单位的浮点小数。 每个时间戳都以自从 1970 年 1 月 1 日午夜(历元)经过了多长时间来表示。;time 模块下有很多函数可以转换常见日期格式。如函数 time.time() 用于获取当前时间戳, 如下实例:;元组...

    利用Python将时间或时间间隔转为ISO 8601格式方法示例

    国际标准化组织的国际标准ISO8601是日期和时间的表示方法,全称为《数据存储和交换形式·信息交换·日期和时间的表示方法》,下面这篇文章主要给大家介绍了关于利用Python将时间或时间间隔转为ISO 8601格式的相关...

    Date时间操作工具类

    根据默认的格式格式化时间 4.根据指定的格式格式化时间 5.改变月份 6.改变天数 7.计算天数间隔 8.Date转String 指定格式 9. String转Date 指定格式 10.时间计算,返回时间差的分钟数 11.获取指定的日期是星期几 12 ....

    moment-duration-format-frequency:将时间间隔格式化为人类可读的字符串

    时刻持续时间格式频率 设置Moment Duration对象的格式插件...持续时间格式化方法可以将矩持续时间格式化为人类可读的频率: moment.duration(1.5, 'weeks').formatAsFrequency('weeks'); // "every 1-2 weeks" moment.

    time-formatter-js:js时间类型格式化工具库(兼容的IE):自定义时间格式,时间排序,间隔天数,前n天的日期。

    一个简单易用的js时间类型格式化工具库(兼容IE)大小:4KB 例子: //引入timeFormatter.js //使用方式非常简单,创建一个timeFormatter实例,传入的对象可省略 var timeFormatter = new TimeFormatter({ ...

    测量程序编制 - python 58格式化输出:时间日期—canlandar模块.pptx

    返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数;calendar.firstweekday( ) 返回当前每周起始日期的设置。默认情况下,首次载入...

    Java 日期比较工具类

    Java 日期比较工具类 各种日期操作及计算( 获取两个日期 间隔天数 间隔月数 格式化日期 )

    mysql日期和时间的间隔计算实例分析

    本文实例讲述了mysql日期和时间的间隔计算。分享给大家供大家参考,具体如下: 我们首先得明确一点,mysql间隔值主要用于日期和时间计算,如果我们要要创建间隔值,可以使用以下表达式: INTERVAL expr unit 然后...

    Java - DateUtil 日期时间转换工具类

    智能格式化数据;获取两个时间之间的间隔;在某个时间基础上,往前推或者往后推几个年,返回[年-月-日]格式的日期;判断时间是否在时间段内;获取某年最后一天日期;在原日期的基础上增加/减少小时数;获取年份中的...

    Windows系统时间同步(NTP)工具(附源码)

    Windows系统时间同步(NTP)工具(附源码) 1、使用指定局域网NTP服务,或公网...2、设置同步时间间隔(与NTP服务通信频率) 3、设置最大时间偏差(自动同步系统时间) 4、发送时钟同步事件到指定服务器 5、可视化图形用户界面

    MySQL的Data_ADD函数与日期格式化函数说明

    expr 是一个表达式,用来指定从起始日期添加或减去的时间间隔值。 Expr是一个字符串;对于负值的时间间隔,它可以以一个 ‘-‘开头。 type 为关键词,它指示了表达式被解释的方式。  关键词INTERVA及 type 分类符...

    arco:即时格式化程序,用于渲染自某个事件以来已经过去或剩下的时间

    一种多语言即时格式化程序,用于计算NOW时间与过去或将来的事件之间的时差。 例如: 5分钟前, 2小时前, 2周内,现在。 为什么选择Arco? (意大利语的时间弧) 大多数JS库已经为您提供了易于使用的“ time-ago”...

    Visual C++范例大全(第一章)

    第1章 实例001——实现C++类的多重继承 实例002——使用虚函数实现运行时... 实例019——计算两个时间点的时间间隔 实例020——使用CStringArray类创建和使用字符串数组 实例021——使用CPtrList类创建和使用链表

    《Visual C++ 范例大全》随书光盘 第一章

    第1章 实例001——实现C++类的多重继承 实例002——使用虚函数实现运行时... 实例019——计算两个时间点的时间间隔 实例020——使用CStringArray类创建和使用字符串数组 实例021——使用CPtrList类创建和使用链表

    VC++开发400实例

    VC++开发 400实例 有说明文档 有目录 对出行者:很全 很实用 第1章 实例001——实现C++类的多重继承 ... 实例019——计算两个时间点的时间间隔 实例020——使用CStringArray类创建和使用字符串数组 实例021

    react-time-ago:实时显示格式化的日期字符串

    格式化程序是可插拔和可扩展的。 默认情况下,它会使用now , X minute(s) ago , X hour(s) ago和X day(s) ago 。 它使用renderProp模式让您完全控制东西的渲染方式。 内部使用 。 演示: : 与其他可用解决方案的...

Global site tag (gtag.js) - Google Analytics