package com.wei.wework.util;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;public class TimeUtil {/*** 仿QQ,微信聊天时间格式化** @param time 时间戳* @return*/public static String QQFormatTime(long time) {Date date = new Date();date.setTime(time);//同一年 显示MM-dd HH:mmif (isSameYear(date)) {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm", Locale.CHINA);//同一天 显示HH:mmif (isSameDay(date)) {int minute = minutesAgo(time);//1小时之内 显示n分钟前if (minute < 60) {//一分钟之内,显示刚刚if (minute <= 1) {return "刚刚";} else {return minute + "分钟前";}} else {return simpleDateFormat.format(date);}} else {//昨天,显示昨天+HH:mmif (isYesterday(date)) {return "昨天 " + simpleDateFormat.format(date);}//本周,显示周几+HH:mmelse if (isSameWeek(date)) {String weekday = null;if (date.getDay() == 1) {weekday = "周一";}if (date.getDay() == 2) {weekday = "周二";}if (date.getDay() == 3) {weekday = "周三";}if (date.getDay() == 4) {weekday = "周四";}if (date.getDay() == 5) {weekday = "周五";}if (date.getDay() == 6) {weekday = "周六";}if (date.getDay() == 0) {weekday = "周日";}return weekday + " " + simpleDateFormat.format(date);} else {//同一年 显示MM-dd HH:mmSimpleDateFormat sdf = new SimpleDateFormat("MM-dd HH:mm", Locale.CHINA);return sdf.format(date);}}} else {//不是同一年 显示完整日期yyyy-MM-dd HH:mmSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.CHINA);return sdf.format(date);}}/*** 几分钟前** @param time* @return*/public static int minutesAgo(long time) {return (int) ((System.currentTimeMillis() - time) / (1000 * 60));}/*** 与当前时间是否在同一周* 先判断是否在同一年,然后根据Calendar.DAY_OF_YEAR判断所得的周数是否一致** @param date* @return*/public static boolean isSameWeek(Date date) {if (isSameYear(date)) {Calendar ca = Calendar.getInstance();//西方周日为一周的第一天,咱得将周一设为一周第一天ca.setFirstDayOfWeek(Calendar.MONDAY);ca.setTime(date);Calendar caNow = Calendar.getInstance();caNow.setFirstDayOfWeek(Calendar.MONDAY);caNow.setTime(new Date());if (ca.get(Calendar.WEEK_OF_YEAR) == caNow.get(Calendar.WEEK_OF_YEAR)) {return true;}} else {return false;}return false;}/*** 是否是当前时间的昨天* 获取指定时间的后一天的日期,判断与当前日期是否是同一天** @param date* @return*/public static boolean isYesterday(Date date) {Date yesterday = getNextDay(date, 1);return isSameDay(yesterday);}/*** 判断与当前日期是否是同一天** @param date* @return*/public static boolean isSameDay(Date date) {return isEquals(date, "yyyy-MM-dd");}/*** 判断与当前日期是否是同一月** @param date* @return*/public static boolean isSameMonth(Date date) {return isEquals(date, "yyyy-MM");}/*** 判断与当前日期是否是同一年** @param date* @return*/public static boolean isSameYear(Date date) {return isEquals(date, "yyyy");}/*** 格式化Date,判断是否相等** @param date* @return 是返回true,不是返回false*/private static boolean isEquals(Date date, String format) {//当前时间Date now = new Date();SimpleDateFormat sf = new SimpleDateFormat(format);//获取今天的日期String nowDay = sf.format(now);//对比的时间String day = sf.format(date);return day.equals(nowDay);}/*** 获取某个date第n天的日期* n<0 表示前n天* n=0 表示当天* n>1 表示后n天** @param date* @param n* @return*/public static Date getNextDay(Date date, int n) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.add(Calendar.DAY_OF_MONTH, n);date = calendar.getTime();return date;}/***  测试* @param args* @throws ParseException*/public static void main(String[] args) throws ParseException {SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");String str = "2021-3-24 11:10:00";Date date = sim.parse(str);long time = date.getTime();String s = QQFormatTime(time);System.out.println(s);}
}

测试结果:

//工作随记,如若有误,感谢指正。

java实现仿QQ,微信聊天时间格式化(聊天记录中的时间戳标记)相关推荐

  1. android格式化时间中文版,Android 仿微信聊天时间格式化显示功能

    本文给大家分享android仿微信聊天时间格式化显示功能. 在同一年的显示规则: 如果是当天显示格式为 HH:mm 例:14:45 如果是昨天,显示格式为 昨天 HH:mm 例:昨天 13:12 如果 ...

  2. android 仿微信聊天时间格式化显示

    仿微信聊天时间格式化显示. 在同一年的显示规则: 如果是当天显示格式为 HH:mm 例:14:45 如果是昨天,显示格式为 昨天 HH:mm 例:昨天 13:12 如果是在同一周 显示格式为 周一 H ...

  3. java实现仿QQ即时聊天

    这是我的java大作业,这里就直接贴上我的实验报告了. 2.0版已更新地址:Java仿QQ2.0版 项目已开源:github地址:imitate-qq 欢迎fork与star 仿微信App:canar ...

  4. java仿QQ微信聊天室

    话不多说,先上图                                   即时通信系统:可以完成群聊.私人聊天,实时发送和显示聊天信息,完成好友列表,进一步可以带表情,附件发送,聊天信息的 ...

  5. js封装毫秒时间戳转换仿微信聊天时间显示格式

    js封装毫秒时间戳转换仿微信聊天时间显示格式 先把微信的时间显示规则拍上来 微信聊天消息时间显示说明 1.当天的消息,以每5分钟为一个跨度的显示时间: 2.消息超过1天.小于1周,显示星期+收发消息的 ...

  6. java聊天程序论文_【基于java的仿qq聊天程序的设计与实现论文最终版材料】

    基于java的仿qq聊天程序的设计与实现(论文)(最终版) <基于java的仿qq聊天程序的设计与实现(论文).doc>由会员分享,可免费在线阅读全文,更多与<基于java的仿qq聊 ...

  7. java 仿qq mysql_基于Java远程通信(仿QQ)及应用研究设计(MySQL)(含录像)

    基于JAVA远程通信(仿QQ)及应用研究设计(MySQL)(含录像)(毕业论文13000字,程序代码,MySQL数据库) 随着信息社会脚步的日益加快,远程通信的应用正在人们的生产生活中扮演着极其重要的 ...

  8. java仿qq登录 界面设计,Java Swing仿QQ登录界面效果

    本文实例为大家分享了Java Swing仿QQ登录界面展示的具体代码,供大家参考,具体内容如下 闲来无事将早些时候已实现的QQ登录界面再实现了一遍,纯手工打造(意思是没有用NetBeans.MyEcl ...

  9. HTML5仿手机微信聊天界面

    HTML5仿手机微信聊天界面,截图效果如下: 源代码如下: <!DOCTYPE html> <html> <head><meta charset=" ...

最新文章

  1. Dorado用法与示例
  2. ASP.NET HTTP 运行时
  3. 常见 Datagrid 错误
  4. 企业网络推广之下滴滴造车野心不减,“造车时代”想入局恐需技术先行
  5. 一个Win32 API实例类(代码收集)
  6. 云痕大数据考试中途可以退出吗_2020CPA考试出考率,创新低?
  7. Python GUI界面编程初步 02 - Tkinter基础
  8. mysql的join语句使用_MySQL开发技巧——如何正确使用Join语句
  9. 零基础学前端,自学还是培训机构?
  10. 中国水性颜料市场趋势报告、技术动态创新及市场预测
  11. 做微信营销你知道男女用微信的习惯吗?
  12. JAVA深入研究——Method的Invoke方法(转)
  13. 打造自己的U盘工具箱
  14. Autosar OSEK 网络管理学习笔记
  15. 【论文精读】Dual-Feature Warping-based Motion Model Estimation
  16. 基于python SMTP实现自动发送邮件教程解析
  17. OpenCascade源码分析之BRepMesh_IncrementalMesh(网格离散化操作)
  18. 5.数据类型详解-字符串
  19. 我的面试宝典(1):给自己定位-霍兰德职业测试
  20. 学会自我管理有哪些好处?自我管理包括哪些内容?

热门文章

  1. 微软CEO:堪比工业革命,这辈子第一次见这么大的技术浪潮!
  2. 图片如何转换成Word文档?进来看看这些操作
  3. 学理财应该从哪些学起_从零开始学理财 这些入门知识你一定要牢记
  4. 网页游戏服务器代理一键端,3D网页游戏《霸刀》服务端最新一键端
  5. Enterprise Architect中的实体关系图:实体关系图(ERD)
  6. TKM32F499评估板使用评测之万事开头难先点个灯压压惊
  7. 图片加载框架Glide使用详解
  8. html 栏目切换幻灯片效果,很酷的切换效果 纯CSS3幻灯片实现
  9. html表格圣杯布局页面,CSS什么是圣杯布局?
  10. linux查找某时间段文件夹,shell查找指定时间段内的文件