java查某个时间在几分钟前、几小时前、几天前、几月前、一年前
java工具类
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.Date;
public class Main {
public static void main(String[] args) {
System.out.println(format(LocalDateTime.now().minusDays(1)));
System.out.println(format(LocalDateTime.now().minusSeconds(2)));
System.out.println(format(LocalDateTime.now().minusWeeks(5)));
}
private static final long ONE_MILLISECOND = 1000L;
private static final long ONE_MINUTE = 60000L;
private static final long ONE_HOUR = 3600000L;
private static final long ONE_DAY = 86400000L;
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 = "1个月前";
private static final String TWO_MONTH_AGO = "2个月前";
private static final String THREE_MONTH_AGO = "3个月前";
private static final String FOUR_MONTH_AGO = "4个月前";
private static final String FIVE_MONTH_AGO = "5个月前";
private static final String SIX_MONTH_AGO = "6个月前";
private static final String SEVEN_MONTH_AGO = "7个月前";
private static final String EIGHT_MONTH_AGO = "8个月前";
private static final String NINE_MONTH_AGO = "9个月前";
private static final String TEN_MONTH_AGO = "10个月前";
private static final String ELEVEN_MONTH_AGO = "11个月前";
private static final String ONE_YEAR_AGO = "一年前";
public static String format(LocalDateTime date) {
return format(localDateTimeToDate(date));
}
public static String format(Date date) {
Calendar calendar = Calendar.getInstance();
long now = calendar.getTimeInMillis();
long delta = now - date.getTime();
// 逻辑判断
if (delta < ONE_MINUTE){ return delta/ONE_MILLISECOND + ONE_SECOND_AGO;}
if (delta < ONE_HOUR){ return delta/ONE_MINUTE + ONE_MINUTE_AGO;}
if (delta < ONE_DAY){ return delta/ONE_HOUR + ONE_HOUR_AGO;}
if (delta < getTime(calendar, now)){ return delta/ONE_DAY + ONE_DAY_AGO;}
if (delta < getTime(calendar, now)){ return ONE_MONTH_AGO;}
if (delta < getTime(calendar, now)){ return TWO_MONTH_AGO;}
if (delta < getTime(calendar, now)){ return THREE_MONTH_AGO;}
if (delta < getTime(calendar, now)){ return FOUR_MONTH_AGO;}
if (delta < getTime(calendar, now)){ return FIVE_MONTH_AGO;}
if (delta < getTime(calendar, now)){ return SIX_MONTH_AGO;}
if (delta < getTime(calendar, now)){ return SEVEN_MONTH_AGO;}
if (delta < getTime(calendar, now)){ return EIGHT_MONTH_AGO;}
if (delta < getTime(calendar, now)){ return NINE_MONTH_AGO;}
if (delta < getTime(calendar, now)){ return TEN_MONTH_AGO;}
if (delta < getTime(calendar, now)){ return ELEVEN_MONTH_AGO;}
return ONE_YEAR_AGO;
}
private static long getTime(Calendar calendar, long now) {
calendar.add(Calendar.MONTH, -1);
return now - calendar.getTimeInMillis();
}
/**
* LocalDateTime 转 Date
* @param localDateTime
* @return
*/
public static Date localDateTimeToDate(LocalDateTime localDateTime){
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDateTime.atZone(zoneId);
return Date.from(zdt.toInstant());
}
/**
* Date 转 LocalDateTime
* @param date
* @return
*/
public static LocalDateTime dateToLocalDateTime(Date date){
LocalDateTime localDateTime = date.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime();
return localDateTime;
}
}
评论区
请写下您的评论...
猜你喜欢
blog
js获取一个月前的今天的日期
前端(h5)
3619
js获取一个月前的今天的日期/***获取上一个月**@date格式为yyyy-mm-dd的日期,如:2014-01-25*/functiongetPreMonth(date){vararr
数据库基础
2703
mysql在一个时间的基础上加n(分钟、小时、天)等SELECTDATE_FORMAT(ADDDATE(now(),INTERVAL20MINUTE),'%Y-%m-%d%H:%i:%s')#加20
official
1031
://github.com/18438301593/NettyWebsocketProtoDemo主要过程分析:一、.proto文件编写,生成java类,以及javacript文件。 参考文章: http://www.j
nginx,前端,java基础
1304
://github.com/18438301593/NettyWebsocketProtoDemo主要过程分析:一、.proto文件编写,生成java类,以及javacript文件。 参考文章: http://www.j
blog
前端使用layui分页
前端(h5)
1469
引入layui相关组件layui.use(['form','laypage'],function(){ var$=layui.$; varlaypage=layui.laypage; varform=layui.form; functionsel(message,page,limit){ $.ajax({ url:'${path}/interview/select',
算法基础
1088
privateStringcamel4underline(Stringparam){
Patternp=Pattern.compile("[A-Z]");
if(param==null||param.equals("")){
return"";
}
StringBuilderbuilder=newStringBuilder(param);
Matchermc=p.matcher(param);
i
ofc
N叉树的前序遍历
official
827
leetcode第589题题目描述给定一个N叉树,返回其节点值的前序遍历。例如,给定一个3叉树:返回其前序遍历:[1,3,5,6,2,4]。解题思路递归遍历,深度优先搜索代码(java
blog
欧几里得定理求最大公约数
数据结构与算法
3494
欧几里得定理求最大公约数往往在计算比例的时候使用用到了递归packageday17;publicclass欧几里得定理{publicstaticvoidmain(String[]args
最新发表
归档
2018-11
12
2018-12
33
2019-01
28
2019-02
28
2019-03
32
2019-04
27
2019-05
33
2019-06
6
2019-07
12
2019-08
12
2019-09
21
2019-10
8
2019-11
15
2019-12
25
2020-01
9
2020-02
5
2020-03
16
2020-04
4
2020-06
1
2020-07
7
2020-08
13
2020-09
9
2020-10
5
2020-12
3
2021-01
1
2021-02
5
2021-03
7
2021-04
4
2021-05
4
2021-06
1
2021-07
7
2021-08
2
2021-09
8
2021-10
9
2021-11
16
2021-12
14
2022-01
7
2022-05
1
2022-08
3
2022-09
2
2022-10
2
2022-12
5
2023-01
3
2023-02
1
2023-03
4
2023-04
2
2023-06
3
2023-07
4
2023-08
1
2023-10
1
2024-02
1
2024-03
1
2024-04
1
标签
算法基础
linux
前端
c++
数据结构
框架
数据库
计算机基础
储备知识
java基础
ASM
其他
深入理解java虚拟机
nginx
git
消息中间件
搜索
maven
redis
docker
dubbo
vue
导入导出
软件使用
idea插件
协议
无聊的知识
jenkins
springboot
mqtt协议
keepalived
minio
mysql
ensp
网络基础
xxl-job
rabbitmq
haproxy
srs
音视频
webrtc
javascript
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。