`
天上掉下个喜欢编程的榕哥哥
  • 浏览: 28254 次
  • 性别: 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实时业务风控系统框架.zip

    实时业务风控系统是分析风险事件,根据场景动态调整规则,实现自动精准预警风险的系统。 本项目只提供实时风控系统框架基础和代码模板。 需要解决的问题 哪些是风险事件,注册、登录、交易、活动等事件,需要业务...

    JAVA线程程序设计(小时钟)实验报告(附完整代码).doc

    骗衍改贾沙澳龚藕糊凉轴骨窖儡眨卞诱送港俘酗彪子漾磕矛窥肤邮烩轴哨痘绵咖曹纤庐 适黎仕怪坯绝眷情枷艾溉摄脖凭捡进摩顾庇毖力卜照钾没蓟晾斩镶讼御贯侨两片完孪水 角闲尹肖钮...// 小时,分钟,秒 double rad = Math

    Spring定时器,定时在任何月份任何日期

    --定时在任何月份任何日期(不管星期几)的22点52分0秒 --&gt; &lt;!-- 一个cron表达式有到少6个(也可能是7个)由空格分隔的时间元素.从左到右,这些元素的定义如下: 1.秒(0-59) 2.分钟(0-59) 3.小时(0-23) 4.月份中的是...

    java_时间日期管理的几乎所有标准代码_时区_时间日期格式的转换加减和比较_判断特殊日期

    将日期格式化成友好的字符串:几分钟前、几小时前、几天前、几月前、几年前、刚刚 将日期以yyyy-MM-dd HH:mm:ss格式化 验证日期是否比当前日期早 对日期进行增加操作 对日期进行相减操作 获得指定Date类型的毫秒数

    timePHP是一个基于php cli开发的定时脚本框架.zip

    timePHP是一个基于php cli开发的定时脚本框架,可以实现简单的配置,自己的逻辑代码纯php无需写shell脚本 易管理,易开发,支持自定义多进程,时间周期可以按(月日,星期几,天,小时,分钟,秒)来执行,等功能。 简单的配置...

    J2EE面试题

    时间:120分钟 一,填空题 1) 每个Servlet都必须实现()接口 a) javax.servlet.Servlet; b) javax.servlet.HttpServlet; c) javax.servlet.GenericServlet; d) javax.servlet.http.Servlet; 2) 利用...

    平台设计方案.doc

    系统处理能力下降到20%的时间每年应小于20分钟 在98%的时间内系统处理能力均大于90% 平台用户体验设计原则 我们在本系统的开发过程中将遵循以下几个原则: 适用性 根据现有软硬件平台的实际情况和未来发展方向,使...

    手机 pdf 阅读器

    MOTO-LINUX平台的手机上JAVA无法实现背景常亮功能,启用该功能后会闪屏,请勿再询问此问题了。 允许用户设置阅读时背景灯的亮度(对大部分NOKIA S40、SE、SAMSUNG手机有效,MOTO上无法实现) 修改跳转界面,左/右键...

    基于javascript实现精确到毫秒的倒计时限时抢购

    这篇文章为大家分享了javascript实现倒计时限时抢购,精确到毫秒的倒计时,供大家参考,具体内容如下 一、效果图 下面的图片就是聚划算上面的限时抢的效果 二、实现限时抢的效果需要用到的知识 :Javascript Date()...

    微软JavaScript手册

    学习JAVA的好帮手,希望有所帮助。欢迎使用 JScript 语言参考 这些方便实用的信息将帮助您了解 JScript 的各个部分。 在“字母顺序的关键字列表”中,可以找到按字母顺序列出的所有 JScript 语言的主题。如果只需要...

Global site tag (gtag.js) - Google Analytics