Java工具类(18)—时间格式化工具类_java时间格式化工具类-程序员宅基地

技术标签: java  java工具类  

Java工具类(18)—时间格式化工具类

时间格式化工具,一秒前,一分钟前,一小时前,昨天,一天前

package com.awifi.cloudnative.container.rbac.user.provider.utils;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
* @Author 张鑫
* @Date 2022/4/20
* @Param 
* @return 
**/
public class dataFormatUtils {
     
   
   
   /**
    * 时间格式化
    *
    * @param date
    * @return
    */
   public static String format(Date date) {
     
       // 计算出相差天数
       int days = differentDays(date, new Date());
       // 同一天
       if (0 == days) {
     
           // 计算出时间差
           long delta = new Date().getTime() - date.getTime();
           // 小于一分钟
           if (delta < 1L * 60000L) {
     
               long seconds = toSeconds(delta);
               return (seconds <= 0 ? 1 : seconds) + "秒前";
           }
           // 小于一小时
           else if (delta < 1L * 3600000L) {
     
               long minutes = toMinutes(delta);
               return (minutes <= 0 ? 1 : minutes) + "分钟前";
           }
           // 小于24小时
           else if (delta < 24L * 3600000L) {
     
               long hours = toHours(delta);
               return (hours <= 0 ? 1 : hours) + "小时前";
           }
       }
       // 不同一天
       else {
     
           if (1 == days) {
     
               return "昨天";
           }
           // 几天前
           else if (3 >= days) {
     
               return days + "天前";
           }
       }
       // 格式化时间
       return getYmdHm(date);
   }

   /**
    * 获取秒
    *
    * @param date
    * @return
    */
   private static long toSeconds(long date) {
     
       return date / 1000L;
   }

   /**
    * 获取分钟
    *
    * @param date
    * @return
    */
   private static long toMinutes(long date) {
     
       return toSeconds(date) / 60L;
   }

   /**
    * 获取小时
    *
    * @param date
    * @return
    */
   private static long toHours(long date) {
     
       return toMinutes(date) / 60L;
   }

   /**
    * 时间格式化,yyyy-MM-dd HH:mm
    */
   public static String getYmdHm(Date date) {
     
       DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
       return df.format(date);
   }

   /**
    * 获取天数
    *
    * @param oldDate
    * @param newDate
    * @return
    */
   public static int differentDays(Date oldDate, Date newDate) {
     
       Calendar oldCal = Calendar.getInstance();
       oldCal.setTime(oldDate);

       Calendar newCal = Calendar.getInstance();
       newCal.setTime(newDate);
       int oldDay = oldCal.get(Calendar.DAY_OF_YEAR);
       int newDay = newCal.get(Calendar.DAY_OF_YEAR);

       int oldYear = oldCal.get(Calendar.YEAR);
       int newYear = newCal.get(Calendar.YEAR);
       // 不是同一年
       if (oldYear != newYear) {
     
           int timeDistance = 0;
           for (int i = oldYear; i < newYear; i++) {
     
               //如果是闰年
               if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
     
                   timeDistance += 366;
               }
               //不是闰年
               else {
     
                   timeDistance += 365;
               }
           }
           return timeDistance + (newDay - oldDay);
       }
       // 是同一年
       else {
     
           return newDay - oldDay;
       }
   }
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43410878/article/details/124289880

智能推荐

Jetson nano系统镜像烧录_jetson nano镜像下载-程序员宅基地

文章浏览阅读3.4k次,点赞5次,收藏46次。Jetson nano系统镜像烧录_jetson nano镜像下载

Java聊天室系统毕业设计-程序员宅基地

文章浏览阅读195次,点赞4次,收藏5次。计算机从出现到现在有了飞速的发展,现阶段的计算机已经不单单是用于进行运算的独立的个体了,跟随计算机一同发展的还有互联网技术,经过了长久的发展,互联网技术有了日新月异的发展,它的发展速度和计算机的发展速度一样的恐怖,从出现一直到现在,它已经在人们的生活的各个方面发挥着自己的作用,而且是不可替代的作用。在计算机编程方面,互联网软件开发逐步转向以java为首的面向对象的编程技术,传统的面向过程的编程技术已经逐渐退出了历史的舞台,java正以不可思议的速度发展。6.1 单元测试 9。目 录 III。

uniapp 修改swiper样式_uniapp swiper 在app端无法设置样式-程序员宅基地

文章浏览阅读6k次,点赞2次,收藏7次。在小程序和app中,更改官方组件样式,swiper重写样式H5页面有效,app无效,解决方法如下用wx-开头可以覆盖 比如swiper的默认样式为 uni-swiper .uni-swiper-wrapper{} 只需要在css里面加一条wx-swiper .wx-swiper-wrapper{} 就可以覆盖了ps: 单位用px或rpx/* wx */ wx-swiper .wx-swiper-dot { width: 10px; height: 3px; } wx-s_uniapp swiper 在app端无法设置样式

Springboot计算机毕业设计微信小程序的新闻管理系统【附源码】开题+论文+mysql+程序+部署-程序员宅基地

文章浏览阅读668次,点赞10次,收藏13次。最后,针对新闻分类的精准性问题,系统将采用合理的分类标准和算法,实现新闻内容的自动分类和推荐,提高用户体验和新闻传播效果。通过本系统的开发与应用,旨在提升新闻传播的效率和效果,满足用户多样化的新闻需求。通过本研究的实施,预期能够取得以下成果:首先,成功开发一款基于微信小程序的新闻管理系统,实现新闻信息的快速发布与管理、用户权限的有效控制以及新闻分类的精准推荐;同时,系统提供的用户管理、新闻类型分类和新闻信息发布等功能,能够帮助新闻机构更好地组织和管理新闻内容,提高新闻发布的质量和效率。

银行家算法程序流程图_raptor银行家算法流程图-程序员宅基地

文章浏览阅读5.2k次,点赞5次,收藏28次。银行家算法程序流程图 _raptor银行家算法流程图

计算机网络—— DNS和CDN那些事_nds cdn-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏2次。前言DNS:keyword:域名解析为IP地址。域名解析协议(DNS)用来把便于人们记忆的主机域名和电子邮件地址映射为计算机易于识别的IP地址。DNS是一种c/s的结构,客户机就是用户用于查找一个名字对应的地址,而服务器通常用于为别人提供查询服务。 ———百度百科CDN:keyword:就近, 降低拥塞。CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容_nds cdn

随便推点

ubuntu18.04安装mysql8.0_乌班图18.04安装mysql8-程序员宅基地

文章浏览阅读7.2k次,点赞9次,收藏27次。1、进入mysql官网,点击No thanks, just start my download.,下载8.0版本的安装包。我的安装包名为mysql-apt-config_0.8.10-1_all.deb,下面以它为例执行命令。2、sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb,然后会弹出如下窗口,确认第一项MySQL Server & Cluster后面的版本是否是8.0版本,如果不是,将光标移动到此处,enter键修改为8.0。如果是,直接向下选O_乌班图18.04安装mysql8

Linux红帽证书考试_红帽子考试版本-程序员宅基地

文章浏览阅读5k次,点赞8次,收藏40次。红帽认证工程师(RHCE,Red Hat Certified Engineer)属于Linux系统的中级水平认证,主要考核对常见服务的部署和维护能力,难度相对RHCSA认证来讲难度更大,而且要求考生必须已获得RHCSA认证。这部分的内容原本应是顶级RHCA认证中DO407科目的知识,随着考试难度的增高,认证的含金量也越高。红帽认证考试全部上机实操,一天考完,上午的RHCSA认证是两个半小时,对应的是RH124和RH134的课程内容,而下午的RHCE认证是三个半小时,对应的是RH294课程内容。_红帽子考试版本

gooflow 自定义流程图-程序员宅基地

文章浏览阅读1w次。demo链接:https://pan.baidu.com/s/1mJ46mlh8v2Q1XnZ8i5DceQ 密码:0lra注意:本地直接打开会报错。不支持 file地址: Uncaught DOMException: Blocked a frame with origin "null" from accessing a cross-origin frame.at init (file:/...

Java8的Stream根据Bean中的某一个属性,就两个List< Bean>的交集差集_java list bean 取差集-程序员宅基地

文章浏览阅读1.4k次。Stream根据Bean中的某一个属性,就两个List< Bean>的交集差集import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;/** * @author liweifang * @desc * @date 2021-03-11 11:39 */class Student { private Integer age; private Str_java list bean 取差集

Unity记录-UGUI的屏幕自适应原理和应用_ugui自适应-程序员宅基地

文章浏览阅读1.9k次,点赞3次,收藏11次。UGUI的屏幕自适应,是通过Canvas Scaler来做的,根据屏幕的分辨率,计算出canvas的大小,同时计算ScaleXY,通过Size + Scale来控制Canvas的变换,UI作为canvas的子物体,也会跟随着一起变化;为了保证UI的位置,需要在设计UI的时候,对角落,边缘的UI做特殊的处理,利用锚点来保证UI与边缘或角落的距离,锚点的概念就不多说了,一句话:锚点的向量值就是锚点与自..._ugui自适应

Eclipse自动生成mapper:Mybatis-Generator插件的使用_eclipse创建mapper-程序员宅基地

文章浏览阅读1.1k次。在maven项目中使用1.导包,版本是1.3.2,一定要对应,不然出错了,很难找到问题,我用了1.3.6的版本,出了问题找了半天//版本是1.3.2,一定要对应,不然出错了,很难找到问题,我用了1.3.6的版本,出了问题找了半天&lt;mybaits.generator.version&gt;1.3.2&lt;/mybaits.generator.version&gt;&lt;d..._eclipse创建mapper

推荐文章

热门文章

相关标签