`
天上掉下个喜欢编程的榕哥哥
  • 浏览: 28975 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

几秒前,几分钟前,几小时前...的java实现

阅读更多

 

       最近在web前端需要实现将一个发布或创建日期转换显示为是几秒前,几分钟前...参考来自stackoverflow上的代码:

 

package com.demo;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class RelativeDateFormat {

    private static final long ONE_MINUTE = 60000L;
    private static final long ONE_HOUR = 3600000L;
    private static final long ONE_DAY = 86400000L;
    private static final long ONE_WEEK = 604800000L;

    private static final String ONE_SECOND_AGO = "秒前";
    private static final String ONE_MINUTE_AGO = "分钟前";
    private static final String ONE_HOUR_AGO = "小时前";
    private static final String ONE_DAY_AGO = "天前";
    private static final String ONE_MONTH_AGO = "月前";
    private static final String ONE_YEAR_AGO = "年前";

    //main方法测试
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:m:s");
        Date date = format.parse("2013-11-11 18:35:35");
        System.out.println(format(date));
    }

    //时间转换
    public static String format(Date date) {
        long delta = new Date().getTime() - date.getTime();
        if (delta < 1L * ONE_MINUTE) {
            long seconds = toSeconds(delta);
            return (seconds <= 0 ? 1 : seconds) + ONE_SECOND_AGO;
        }
        if (delta < 45L * ONE_MINUTE) {
            long minutes = toMinutes(delta);
            return (minutes <= 0 ? 1 : minutes) + ONE_MINUTE_AGO;
        }
        if (delta < 24L * ONE_HOUR) {
            long hours = toHours(delta);
            return (hours <= 0 ? 1 : hours) + ONE_HOUR_AGO;
        }
        if (delta < 48L * ONE_HOUR) {
            return "昨天";
        }
        if (delta < 30L * ONE_DAY) {
            long days = toDays(delta);
            return (days <= 0 ? 1 : days) + ONE_DAY_AGO;
        }
        if (delta < 12L * 4L * ONE_WEEK) {
            long months = toMonths(delta);
            return (months <= 0 ? 1 : months) + ONE_MONTH_AGO;
        } else {
            long years = toYears(delta);
            return (years <= 0 ? 1 : years) + ONE_YEAR_AGO;
        }
    }

    private static long toSeconds(long date) {
        return date / 1000L;
    }

    private static long toMinutes(long date) {
        return toSeconds(date) / 60L;
    }

    private static long toHours(long date) {
        return toMinutes(date) / 60L;
    }

    private static long toDays(long date) {
        return toHours(date) / 24L;
    }

    private static long toMonths(long date) {
        return toDays(date) / 30L;
    }

    private static long toYears(long date) {
        return toMonths(date) / 365L;
    }

}
 

 

分享到:
评论

相关推荐

    一个简单的java库用于将显示日期格式化成几分钟几天之前这样的格式

    为了方便开发者更加直观地展示日期信息,如“几分钟前”或“几天前”,一个名为"marlonlom-timeago"的简单Java库应运而生。这个库的目标是提供一个易于使用的API,帮助开发者快速将日期转换为这种易于理解的相对时间...

    java相对时间计算(几天前、几年前

    在Java编程中,处理日期和时间是常见的任务之一。...在实际开发中,我们还可以根据需求扩展这些基础方法,比如添加对小时、分钟和秒的支持,或者创建通用的工具方法来处理各种时间单位的相对计算。

    java中计算两个日期相差几天

    获取到毫秒差值后,可以通过简单的数学运算来计算出具体的天数、小时数、分钟数以及秒数: ```java long day = diff / nd; // 计算差多少天 long hour = diff % nd / nh; // 计算差多少小时 long min = diff %...

    java 日期操作工具类:包括计算两个时间相差距离多少天多少小时多少分多少秒

    这篇博客文章“java 日期操作工具类:包括计算两个时间相差距离多少天多少小时多少分多少秒”提供了一个实用的工具类,帮助开发者更方便地处理日期和时间差异。下面将详细解释这个工具类中的关键知识点。 1. **Java...

    数字时钟,java实现。

    这个简单的数字时钟程序会每秒打印一次当前时间,格式为`小时:分钟:秒`。注意,由于Java的`Thread.sleep(1000)`方法可能会被打断,所以捕获了`InterruptedException`。 为了增强时钟的功能,你可以考虑以下几点改进...

    js和java返回三个月前的时间

    ### 使用JS和Java返回三个月前的时间 在软件开发过程中,日期和时间的处理是一项非常常见的需求,尤其是在涉及历史数据查询、统计分析等场景时。本文将详细介绍如何使用JavaScript(JS)和Java这两种语言来实现获取...

    Java 实现倒计时功能(由秒计算天、小时、分钟、秒)

    Java 实现倒计时功能(由秒计算天、小时、分钟、秒) Java 实现倒计时功能是指根据服务器端返回的时间戳长度,计算出天、小时、分钟、秒的数值,并将其展示出来。下面是 Java 实现倒计时功能的方案: 首先,需要...

    js实现时间显示几天前、几小时前或者几分钟前的方法集锦

    除了上述的方法,实现“几天前”、“几小时前”或“几分钟前”的方法还有很多,每种方法都有其特点和适用场景。例如,某些场景下可能需要更多的定制化处理,而另一些场景可能更倾向于使用现成的、经过充分测试的第三...

    java的swing实现计时与倒计时

    总结来说,实现Java Swing的计时与倒计时功能涉及到以下几个关键点: 1. 使用Swing组件创建用户界面,如JFrame、JTextField、JButton等。 2. 处理用户输入的时间,确保格式正确。 3. 使用多线程或者javax.swing....

    java的常用的获取时间的方法

    计算两个日期之间相差的天数,可以通过将日期转换为毫秒值,然后相减,并除以一天的毫秒数(即24小时*60分钟*60秒*1000毫秒)来实现。例如: ```java public static String getTwoDay(String sj1, String sj2) { ...

    基于java的日历系统

    首先,系统能够**开启并显示当前的具体时间**,包括小时、分钟和秒。这通常涉及到Java中的`java.util.Date`或`java.time`包中的类,如`LocalDateTime`。开发者会利用这些类获取当前系统时间,并通过自定义格式化方法...

    简单的JAVA倒计时程序

    倒计时计数是指将指定的日期和时间与当前时间进行比较,从而计算出倒计时的天、小时、分钟和秒数。该程序使用Calendar类的getInstance()方法获取当前日期和时间,然后使用set()方法设置指定的日期和时间。接着,程序...

    java时间大全.txt

    根据提供的文件信息,本文将详细解析Java中与时间处理相关的几个关键知识点,这些知识点主要集中在如何获取当前时间、格式化日期、以及日期与字符串之间的转换等方面。 ### 一、获取当前时间 #### 1.1 获取完整...

    java 获取日期的几天前,几个月前和几年前的实例

    根据差异的大小,返回相应的描述,比如“秒前”、“分钟前”、“小时前”、“天前”、“月前”或“年前”。这个方法使用了一系列的if-else语句来判断时间差的范围。 5. **示例代码调用**: 虽然在提供的内容中没有...

    Simple java library for displaying dates as relative time .zip

    在Java编程领域,有时我们需要将日期显示为相对于当前时间的相对时间,比如“2分钟前”、“1小时前”等。这个“Simple java library for displaying dates as relative time .zip”文件提供了一个简洁的解决方案,...

    java判断时间大小

    3. **时间差详细计算**:可以进一步细化时间差的显示,如同时显示天数、小时数、分钟数和秒数。 - **代码示例**: ```java long l = now.getTime() - date.getTime(); long day = l / (24 * 60 * 60 * 1000); ...

    java 获得时间方法

    无论是需要获取精确到秒的时间戳还是只需要年月日这样的基本信息,都可以轻松实现。这对于日常开发中处理日期相关的功能非常有帮助。 在实际项目中,还可能需要考虑更多细节,比如时区的处理、闰年的判断等,这些都...

    Java模拟LCD液晶屏时钟特效.rar

    开发者需要根据时间(小时、分钟和秒)动态地改变这些线条的状态,以显示当前的时间。这涉及到对时间的处理,比如使用`java.util.Calendar`或`java.time`包中的类来获取当前时间。 此外,描述中提到的“带有右键...

    java util包使用详解

    它提供了多种方法来操作日期和时间,例如get()方法可以获取当前日期的年、月、日、小时、分钟和秒等信息。 随机数类Random Random类用于生成随机数,提供了多种方法来生成不同的随机数,例如nextInt()方法可以生成...

    java版日期计算器

    - **`LocalTime`**:仅包含时间部分(小时、分钟、秒、纳秒)。 - **`LocalDateTime`**:结合了`LocalDate`和`LocalTime`。 - **`ZonedDateTime`**:包含日期、时间以及时区信息。 这些类提供了丰富的静态工厂...

Global site tag (gtag.js) - Google Analytics