java几秒前,几分钟前,几小时前,几天前,几月前,几年前的实现

1package com.date; 2 3import java.text.ParseException; 4import java.text.SimpleDateFormat; 5import java.util.Date; 6 7public class RelativeDateFormat { 8 9    private static final long ONE_MINUTE = 60000L; 10    private static final long ONE_HOUR = 3600000L; 11    private static final long ONE_DAY = 86400000L; 12    private static final long ONE_WEEK = 604800000L; 13 14    private static final String ONE_SECOND_AGO = "秒前"; 15    private static final String ONE_MINUTE_AGO = "分钟前"; 16    private static final String ONE_HOUR_AGO = "小时前"; 17    private static final String ONE_DAY_AGO = "天前"; 18    private static final String ONE_MONTH_AGO = "月前"; 19    private static final String ONE_YEAR_AGO = "年前"; 20 21    public static void main(String[] args) throws ParseException { 22        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:m:s"); 23        Date date = format.parse("2013-11-11 18:35:35"); 24        System.out.println(format(date)); 25    } 26 27    public static String format(Date date) { 28        long delta = new Date().getTime() - date.getTime(); 29        if (delta < 1L * ONE_MINUTE) { 30            long seconds = toSeconds(delta); 31            return (seconds <= 0 ? 1 : seconds) + ONE_SECOND_AGO; 32        } 33        if (delta < 45L * ONE_MINUTE) { 34            long minutes = toMinutes(delta); 35            return (minutes <= 0 ? 1 : minutes) + ONE_MINUTE_AGO; 36        } 37        if (delta < 24L * ONE_HOUR) { 38            long hours = toHours(delta); 39            return (hours <= 0 ? 1 : hours) + ONE_HOUR_AGO; 40        } 41        if (delta < 48L * ONE_HOUR) { 42            return "昨天"; 43        } 44        if (delta < 30L * ONE_DAY) { 45            long days = toDays(delta); 46            return (days <= 0 ? 1 : days) + ONE_DAY_AGO; 47        } 48        if (delta < 12L * 4L * ONE_WEEK) { 49            long months = toMonths(delta); 50            return (months <= 0 ? 1 : months) + ONE_MONTH_AGO; 51        } else { 52            long years = toYears(delta); 53            return (years <= 0 ? 1 : years) + ONE_YEAR_AGO; 54        } 55    } 56 57    private static long toSeconds(long date) { 58        return date / 1000L; 59    } 60 61    private static long toMinutes(long date) { 62        return toSeconds(date) / 60L; 63    } 64 65    private static long toHours(long date) { 66        return toMinutes(date) / 60L; 67    } 68 69    private static long toDays(long date) { 70        return toHours(date) / 24L; 71    } 72 73    private static long toMonths(long date) { 74        return toDays(date) / 30L; 75    } 76 77    private static long toYears(long date) { 78        return toMonths(date) / 365L; 79    } 80 81}
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )