`
mwhgJava
  • 浏览: 97965 次
  • 性别: 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
分享到:
评论

相关推荐

    时间格式化工具类

    这些类提供了丰富的功能,如添加、减去时间间隔,获取日期或时间的组成部分,以及格式化和解析日期时间字符串。 `DateUtil`类可能包含了以下功能: 1. **格式化日期和时间**:使用`DateTimeFormatter`创建自定义的...

    易语言取格式化时间模块

    在取格式化时间模块中,可能还包含了一些高级功能,例如时间间隔的加减运算、日期的比较等。 在实际应用中,易语言的取格式化时间模块源码可以帮助开发者更好地处理日期和时间数据,提高程序的用户体验。理解并熟练...

    prettytime,Java的社交风格日期和时间格式.zip

    5. **扩展性**:除了基本的时间间隔格式化,"prettytime"还允许扩展来处理复杂的时间格式,比如工作日计算、节假日处理等。 6. **版本控制**:"prettytime-master"表明这是项目的主分支,通常包含最新、最完整的...

    易语言格式化时间和日期源码

    在实际应用中,我们可能还需要处理时间间隔,比如计算两个日期之间的天数差。易语言提供了“日期/时间运算”类的函数,如“日期减法”或“时间差”来实现这一功能: ```易语言 .日期1 = 创建日期(2022, 1, 1) .日期...

    Oracle获取系统时间及格式化

    Oracle 获取系统时间及格式化 Oracle 中获取系统时间可以使用 SYSDATE() 函数,该函数可以返回当前日期和时间。SYSDATE() 函数可以与 TO_CHAR() 函数结合使用,以将日期和时间格式化为字符串。 TO_CHAR() 函数可以...

    格式化时间工具类

    3. **时间间隔处理**:可能包括计算两个日期或时间之间的差值,如`getDurationBetween(LocalDate startDate, LocalDate endDate)`返回两个日期之间的天数,或者`getDurationBetween(LocalDateTime startDateTime, ...

    OC Extension Time(时间).zip

    10. **时间间隔格式化**:将时间间隔转换成易读的格式,如“2分钟前”,“1小时前”。 通过这样的工具类,开发者可以更高效地处理时间相关任务,避免重复编写基础时间操作的代码,提高代码的可读性和复用性。在实际...

    易语言格式化时间和日期源码.7z

    在这个“易语言格式化时间和日期源码.7z”压缩包中,包含的是关于易语言处理时间与日期的源代码,这对于学习易语言以及了解日期和时间处理的开发者来说是非常有价值的资源。 在编程中,处理时间和日期是一项常见的...

    php将时间格式化的类.zip

    这个"php将时间格式化的类.zip"压缩包提供了一个专门处理这种需求的类库,帮助开发者更方便地处理时间间隔的显示,比如显示为“几天前”或“几分钟前”。下面将详细讲解这个类库可能包含的功能以及相关的PHP时间处理...

    开源项目-hako-durafmt.zip

    总的来说,`hako-durafmt`项目为Go语言开发人员提供了一个强大且灵活的时间间隔格式化工具,有助于提升代码的可读性和用户体验。它体现了开源社区的力量,通过共享和改进代码,让开发变得更加简单和高效。

    格式化时间、视图

    本文将深入探讨标题和描述中提到的“格式化时间”和“视图”相关的知识点,并结合标签“格式获取时间”和“格式获取Xib”进行详细解释。 ### 格式化时间 在iOS中,处理时间通常涉及到`NSDate`、`NSCalendar`、`...

    iOS日期格式化类(刚刚、一分钟前、昨天、周几)

    在iOS开发中,日期和时间的格式化是一个常见的任务,特别是在显示用户友好的时间戳时。"iOS日期格式化类(刚刚、一分钟前、昨天、周几)"这个主题聚焦于如何利用Objective-C来处理日期的本地化显示,使得时间表述更加...

    C++ 取间隔时间类(高精度)

    4. 转换格式:可能包括将时间间隔转换为毫秒、微秒、秒等不同单位的方法。 5. 输出:提供友好的字符串输出,便于调试和日志记录。 在C++中,实现这样的类可能涉及到以下关键点: - 使用`std::chrono::duration`表示...

    winform时间间隔计算

    在Windows Forms(WinForm)应用开发中,时间间隔计算是一个常见的需求,特别是在处理用户交互、数据更新或系统定时任务时。本节将深入探讨如何在WinForm应用中进行时间间隔计算,以及相关的编程技巧和最佳实践。 1...

    格式化写入文件程序

    例如,使用`print()`的`sep`和`end`参数控制间隔和行结束符,使用`format()`方法通过占位符{}和对应的键值对实现复杂的格式化。 ```python with open('output.txt', 'w') as f: f.write('{:<10}{:>10}'.format('...

    易语言格式化现行时间源码.zip

    易语言是一种专为初学者设计的编程语言,它采用了贴近自然语言的语法,使得编程变得更加简单易懂。本文将深入探讨“易语言格式...同时,这种实践也能为其他更复杂的日期时间操作打下基础,如时间间隔计算、时间比较等。

    时间间隔计算器1.0

    《时间间隔计算器1.0:记录生活中的点滴时光》 时间,这个无形的概念,却在我们的生活中扮演着至关重要的角色。无论是庆祝生日、纪念日,还是追踪项目进度,我们都需要精确地计算时间间隔。这就是“时间间隔计算器...

    时间间隔自动计算,自己做着玩

    总之,“时间间隔自动计算”项目涉及到时间数据处理的多个方面,包括时间表示、时间间隔计算、自动化处理、数据处理和用户交互等。这些技术在日常开发中非常常见,掌握它们能帮助我们更好地处理与时间相关的各种问题...

    log4j日志输出格式化和日志文件名格式化

    在这个配置中,`DatePattern`参数指定了滚动文件的时间间隔,'.'yyyy-MM-dd表示每天生成一个新的文件。日志文件名为`app.log`,每天会生成如`app.log.2022-03-01`这样的新文件。 当然,你还可以使用...

    c# 字符串格式化日期时间.7z

    C#中还有其他类处理日期和时间,如`DateTimeOffset`用于处理带有时区的日期时间,`TimeSpan`用于表示时间间隔。 7. **扩展方法和林纳克斯表达式**: 在C# 6及以上版本,可以使用字符串插值(linq表达式)来简化...

Global site tag (gtag.js) - Google Analytics