Java编写时间工具类ZTDateTimeUtil的示例代码

 更新时间:2023年11月10日 14:24:18   作者:Recently 祝祝  
这篇文章主要为大家详细介绍了如何利用Java编写时间工具类ZTDateTimeUtil,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下

1.返回指定格式的当前时间,Date-->FormatString,Date类型转Strig

 Date date = new Date();
 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
 String datestring  = simpleDateFormat.format(date);
 System.out.printf(datestring);

2.返回固定格式的Date类型时间Date---》ToString---》ToDate,Date类型格式化成Date

public  static String TimeFormat ="yyyy-MM-dd";
    public static void main(String[] args) {
        Date date =new Date(System.currentTimeMillis());
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(TimeFormat);
        String dateformat=simpleDateFormat.format(date);
        System.out.printf(dateformat);
        Date dateafterFormat =null;
        try {
            dateafterFormat=simpleDateFormat.parse(dateformat);
            System.out.printf(String.valueOf(dateafterFormat));
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }

3.字符串转日期 String格式化成String

//parse(String text, ParsePosition pos)
//解析字符串中的文本以Date生成,parase需要背用try-catch包围
 String dateTime ="2023-01-16 17:35:16";
  SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    try {
        Date date =simpleDateFormat.parse(dateTime);
        System.out.printf(date.toString());
    } catch (ParseException e) {
        throw new RuntimeException(e);
}

4.两时间关系判断构件

 //时间相等返回0,time1大于time2返回1,time1小于time2返回-1
  Date time1 = new Date(System.currentTimeMillis());
  String date ="2023-01-17 17:35:16";
   Date time2 = null;
   try {
       time2 = new SimpleDateFormat("yyyy-MM-dd").parse(date);
   } catch (ParseException e) {
       throw new RuntimeException(e);
   }
   int flag =time1.compareTo(time2);
   System.out.printf(flag+"");

5.Date转换为字符串:Date格式化成String

 public static String date2Str(Date date, String format) {
        if (null == date) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
}

6.String类型时间戳格式化成日期格式String

public static String changesStringTimestamToformat(String timestamp){
        LocalDateTime parse = LocalDateTime.ofInstant(Instant.ofEpochMilli(Long.parseLong(timestamp)), ZoneId.systemDefault());
        String format = parse.format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss"));
        return format;
    }

知识补充

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

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;
       }
   }
}

到此这篇关于Java编写时间工具类ZTDateTimeUtil的示例代码的文章就介绍到这了,更多相关Java时间工具类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • spring中的事务执行流程图解

    spring中的事务执行流程图解

    这篇文章主要介绍了spring中的事务执行流程图解,Spring事务是Spring框架提供的一种管理数据库事务的机制,它通过将一系列数据库操作封装在一个事务中,保证这些操作要么全部成功执行,要么全部回滚,从而确保数据的一致性和完整性,需要的朋友可以参考下
    2023-10-10
  • Java Flink窗口触发器Trigger的用法详解

    Java Flink窗口触发器Trigger的用法详解

    Trigger(窗口触发器)决定了窗口(由 WindowAssigner 产生)什么时候调用窗口处理函数。可以根据指定的时间或数据元素条件来决定什么时候触发。本文将详细讲讲其用法,需要的可以参考一下
    2022-07-07
  • 解决使用stream将list转map时,key重复导致报错的问题

    解决使用stream将list转map时,key重复导致报错的问题

    这篇文章主要介绍了解决使用stream将list转map时,key重复导致报错的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • SpringBoot JWT接口验证实现流程详细介绍

    SpringBoot JWT接口验证实现流程详细介绍

    这篇文章主要介绍了SpringBoot+JWT实现接口验证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-09-09
  • 深入理解Java中关键字final、finally、finalize的区别

    深入理解Java中关键字final、finally、finalize的区别

    final、finally、finalize 的区别 这三个 Java 关键字虽然拼写相似,但功能完全不同,本文将从定义、使用场景、代码示例、底层机制以及最佳实践等多个维度,彻底讲清这三者的差异,并附上流程图和对比表格,助你一次搞懂
    2026-05-05
  • CentOS安装solr 4.10.3详细教程

    CentOS安装solr 4.10.3详细教程

    这篇文章主要为大家详细介绍了CentOS安装solr 4.10.3的详细教程 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • SpringBoot中HTTP连接池的配置与优化

    SpringBoot中HTTP连接池的配置与优化

    这篇文章主要为大家详细介绍了SpringBoot中HTTP连接池的配置与优化的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-05-05
  • SpringBoot热部署Springloaded实现过程解析

    SpringBoot热部署Springloaded实现过程解析

    这篇文章主要介绍了SpringBoot热部署Springloaded实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • MyBatis中使用$和#所遇到的问题及解决办法

    MyBatis中使用$和#所遇到的问题及解决办法

    这篇文章主要介绍了MyBatis中使用$和#所遇到的问题及解决办法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • Java项目启动成功、失败信息实时反馈提醒问题(邮件或者短信)

    Java项目启动成功、失败信息实时反馈提醒问题(邮件或者短信)

    这篇文章主要介绍了Java项目启动成功、失败信息实时反馈提醒问题(邮件或者短信),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06

最新评论