首页 > 其他分享 >时间工具类

时间工具类

时间:2023-06-19 22:46:53浏览次数:28  
标签:return String Date static date 时间 工具 public

 

时间工具类

package com.iktapp.common.utils;

import cn.hutool.core.date.DateTime;
import org.apache.commons.lang3.StringUtils;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;

public class DateUtil
{
    //锁对象
    private static final Object lockObj = new Object();

    //存放不同的日期模板格式的sdf的Map
    private static Map<String, ThreadLocal<SimpleDateFormat>> sdfMap = new HashMap<String, ThreadLocal<SimpleDateFormat>>();

    //缺省日期格式
    public static final String DATE_DEFAULT_FORMAT = "yyyy-MM-dd";
    public static final String DATE_DEFAULT_FORMATSS = "yyyyMMddhhmmss";
    //全日期格式
    public static final String DATE_FULL_FORMAT = "yyyy-MM-dd HH:mm:ss";
    //精简日期格式
    public static final String DATE_SIMPLE_FORMAT = "yyyyMMdd";

    public static final String DATE_FULL_FORMAT_CHINA = "yyyy年MM月dd日 HH:mm:ss";
    //全日期格式无秒
    public static final String DATE_NO_SS_FORMAT = "yyyy-MM-dd HH:mm";

    public static final String DATE_TZ_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";

    public static final String DATE_CRON_FORMAT = "ss mm HH dd MM ? yyyy";

    public static final String DATE_FORMAT_NO_ = "yyyyMMdd";

    public static final String [] DAY_NAMES = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五","星期六" };


    /**
     *时间转字符串
     */
    public static String dateToString(Date date, String pattern) {
        if (pattern == null || "".equals(pattern)) {
            pattern = DATE_DEFAULT_FORMAT;
        }
        if (date != null) {
            return getSimpleDateFormat(pattern).format(date);
        } else {
            return null;
        }
    }

    public static String dateToString(Date date) {
        return dateToString(date, null);
    }

    /**
     *得到格式化对象
     */
    public static SimpleDateFormat getSimpleDateFormat(final String pattern) {
        ThreadLocal<SimpleDateFormat> t1 = sdfMap.get(pattern);
        if (t1 == null) {
            synchronized (lockObj) {
                t1 = new ThreadLocal<SimpleDateFormat>() {
                    @Override
                    protected SimpleDateFormat initialValue() {
                        return new SimpleDateFormat(pattern);
                    }
                };
                sdfMap.put(pattern, t1);
            }
        }
        return t1.get();
    }

    /**
     *字符串转时间
     */
    public static Date stringToDate(String date, String pattern){
        if (pattern == null || "".equals(pattern)) {
            pattern = DATE_DEFAULT_FORMAT;
        }
        try
        {
            return getSimpleDateFormat(pattern).parse(date);
        }
        catch (ParseException e)
        {
            e.printStackTrace();
        }
        return null;
    }

    /**
     *字符串转时间
     */
    public static Date stringToDate(String date) {
        Date result = null;
        if (date == null) {
            return null;
        }
        if (date.length() == DATE_DEFAULT_FORMAT.length()) {
            try {
                result = stringToDate(date, DATE_DEFAULT_FORMAT);
                return result;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    /**
     *获取当天日期
     */
    public static String getToday(String pattern) {
        return dateToString(new Timestamp(System.currentTimeMillis()), pattern);
    }

    /**
     * 将 yyyy-MM-dd'T'HH:mm:ss.SSS'Z' 类型的string类型转化为Date类型
     *
     * @param date 字符串
     * @return
     */
    public static Date tzToDate(String date) {
        DateFormat format = new SimpleDateFormat(DATE_TZ_FORMAT, Locale.CHINA);
        format.setTimeZone((TimeZone.getTimeZone("UTC")));
        try {
            return format.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static Long diffTime(String ds1, String ds2) {
        DateFormat df = new SimpleDateFormat(DATE_FULL_FORMAT);
        try {
            Date d1 = df.parse(ds1);
            Date d2 = df.parse(ds2);
            long diff = d1.getTime() - d2.getTime();
            return diff;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 比较时间
     * @param date1
     * @param date2
     * @return
     */
    public static Long compare(Date date1, Date date2)
    {
        return date1.getTime()-date2.getTime();
    }

    public static Date getOneMonthEarlyDate(Date date)
    {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.MONTH, -1);
        c.add(Calendar.DATE, 1);
        return c.getTime();
    }

    /**
     * 将日期格式改为 yyyy-MM-dd 格式
     * @param date
     * @return
     */
    public static Date transformToYMD(Date date)
    {
        LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
        Date newDate = java.sql.Date.valueOf(localDate);
        return newDate;
    }

    /**
     * 获取日期所对的星期名
     * @param date
     * @return
     */
    public static String getDayName(Date date)
    {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        return DAY_NAMES[dayOfWeek];
    }

    /**
     * 获取指定日期前后的日期, days为正数时,为指定日期后面的日期
     * @param date
     * @param days
     * @return
     */
    public static Date getDay(Date date, int days)
    {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, days);
        Date newDate = calendar.getTime();
        return newDate;
    }


    /**
     * 两个时间只差
     *
     * @param startDate
     * @param endDate
     * @return 秒数
     */
    public static Integer getBetweenSecond(Date startDate, Date endDate) {
        Integer seconds = 0;
        try {
            if (startDate != null && endDate != null) {
                long ss = 0;
                if (startDate.before(endDate)) {
                    ss = endDate.getTime() - startDate.getTime();
                } else {
                    ss = startDate.getTime() - endDate.getTime();
                }
                seconds = Integer.valueOf((int) (ss / (1000)));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return seconds;
    }

    /**
     * 获取YYYYMM格式日期
     *
     * @param date
     * @return
     */
    public static String getDateYYYYMM(Date date) {
        DateTime d = cn.hutool.core.date.DateUtil.date(date);
        return d.year() + StringUtils.leftPad("" + (d.month() + 1), 2, "0");
    }

    /**
     * @Author:
     * @Description:获取输入日期的前n天
     * @Date:
     * @strData:参数格式:yyyy-MM-dd
     * @return:返回格式:yyyy-MM-dd
     */
    public static String getPreDateByDate(String strData, int diff) {
        String preDate = "";
        Calendar c = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = sdf.parse(strData);
        } catch (java.text.ParseException e) {
            e.printStackTrace();
        }

        c.setTime(date);
        int day1 = c.get(Calendar.DATE);
        c.set(Calendar.DATE, day1 - diff);
        preDate = sdf.format(c.getTime());
        return preDate;
    }

    /**
     * 将date转为calendar
     * @param date
     * @return
     */
    public static Calendar getCalendar(Date date) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar;
    }

    /**
     * 获取日期的年份
     * @param date
     * @return
     */
    public static int getYear(Date date) {
        return getCalendar(date).get(Calendar.YEAR);
    }

    /**
     * 获取日期的月份
     * @param date
     * @return
     */
    public static int getMonth(Date date) {
        return getCalendar(date).get(Calendar.MONTH) + 1;
    }


    /**
     * 判读时间差距,两个时间相差多少天,时,分,秒
     * @param date
     * @return
     */
    public static Long getDay(Date date) {
        Long days = null;
        try {
            //现在系统当前时间
            Date currentTime = new Date();
            //过去时间
            Date pastTime = date;
            long diff = currentTime.getTime() - pastTime.getTime();
            days = diff / (1000 * 60 * 60 * 24);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return days;
    }

}

 

package com.iktapp.common.utils;

import cn.hutool.core.date.DateTime;
import org.apache.commons.lang3.StringUtils;

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;

public class DateUtil
{
//锁对象
private static final Object lockObj = new Object();

//存放不同的日期模板格式的sdf的Map
private static Map<String, ThreadLocal<SimpleDateFormat>> sdfMap = new HashMap<String, ThreadLocal<SimpleDateFormat>>();

//缺省日期格式
public static final String DATE_DEFAULT_FORMAT = "yyyy-MM-dd";
public static final String DATE_DEFAULT_FORMATSS = "yyyyMMddhhmmss";
//全日期格式
public static final String DATE_FULL_FORMAT = "yyyy-MM-dd HH:mm:ss";
//精简日期格式
public static final String DATE_SIMPLE_FORMAT = "yyyyMMdd";

public static final String DATE_FULL_FORMAT_CHINA = "yyyy年MM月dd日 HH:mm:ss";
//全日期格式无秒
public static final String DATE_NO_SS_FORMAT = "yyyy-MM-dd HH:mm";

public static final String DATE_TZ_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";

public static final String DATE_CRON_FORMAT = "ss mm HH dd MM ? yyyy";

public static final String DATE_FORMAT_NO_ = "yyyyMMdd";

public static final String [] DAY_NAMES = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五","星期六" };


/**
*时间转字符串
*/
public static String dateToString(Date date, String pattern) {
if (pattern == null || "".equals(pattern)) {
pattern = DATE_DEFAULT_FORMAT;
}
if (date != null) {
return getSimpleDateFormat(pattern).format(date);
} else {
return null;
}
}

public static String dateToString(Date date) {
return dateToString(date, null);
}

/**
*得到格式化对象
*/
public static SimpleDateFormat getSimpleDateFormat(final String pattern) {
ThreadLocal<SimpleDateFormat> t1 = sdfMap.get(pattern);
if (t1 == null) {
synchronized (lockObj) {
t1 = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat(pattern);
}
};
sdfMap.put(pattern, t1);
}
}
return t1.get();
}

/**
*字符串转时间
*/
public static Date stringToDate(String date, String pattern){
if (pattern == null || "".equals(pattern)) {
pattern = DATE_DEFAULT_FORMAT;
}
try
{
return getSimpleDateFormat(pattern).parse(date);
}
catch (ParseException e)
{
e.printStackTrace();
}
return null;
}

/**
*字符串转时间
*/
public static Date stringToDate(String date) {
Date result = null;
if (date == null) {
return null;
}
if (date.length() == DATE_DEFAULT_FORMAT.length()) {
try {
result = stringToDate(date, DATE_DEFAULT_FORMAT);
return result;
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}

/**
*获取当天日期
*/
public static String getToday(String pattern) {
return dateToString(new Timestamp(System.currentTimeMillis()), pattern);
}

/**
* 将 yyyy-MM-dd'T'HH:mm:ss.SSS'Z' 类型的string类型转化为Date类型
*
* @param date 字符串
* @return
*/
public static Date tzToDate(String date) {
DateFormat format = new SimpleDateFormat(DATE_TZ_FORMAT, Locale.CHINA);
format.setTimeZone((TimeZone.getTimeZone("UTC")));
try {
return format.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}

public static Long diffTime(String ds1, String ds2) {
DateFormat df = new SimpleDateFormat(DATE_FULL_FORMAT);
try {
Date d1 = df.parse(ds1);
Date d2 = df.parse(ds2);
long diff = d1.getTime() - d2.getTime();
return diff;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

/**
* 比较时间
* @param date1
* @param date2
* @return
*/
public static Long compare(Date date1, Date date2)
{
return date1.getTime()-date2.getTime();
}

public static Date getOneMonthEarlyDate(Date date)
{
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.MONTH, -1);
c.add(Calendar.DATE, 1);
return c.getTime();
}

/**
* 将日期格式改为 yyyy-MM-dd 格式
* @param date
* @return
*/
public static Date transformToYMD(Date date)
{
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
Date newDate = java.sql.Date.valueOf(localDate);
return newDate;
}

/**
* 获取日期所对的星期名
* @param date
* @return
*/
public static String getDayName(Date date)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
return DAY_NAMES[dayOfWeek];
}

/**
* 获取指定日期前后的日期, days为正数时,为指定日期后面的日期
* @param date
* @param days
* @return
*/
public static Date getDay(Date date, int days)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, days);
Date newDate = calendar.getTime();
return newDate;
}


/**
* 两个时间只差
*
* @param startDate
* @param endDate
* @return 秒数
*/
public static Integer getBetweenSecond(Date startDate, Date endDate) {
Integer seconds = 0;
try {
if (startDate != null && endDate != null) {
long ss = 0;
if (startDate.before(endDate)) {
ss = endDate.getTime() - startDate.getTime();
} else {
ss = startDate.getTime() - endDate.getTime();
}
seconds = Integer.valueOf((int) (ss / (1000)));
}
} catch (Exception e) {
e.printStackTrace();
}
return seconds;
}

/**
* 获取YYYYMM格式日期
*
* @param date
* @return
*/
public static String getDateYYYYMM(Date date) {
DateTime d = cn.hutool.core.date.DateUtil.date(date);
return d.year() + StringUtils.leftPad("" + (d.month() + 1), 2, "0");
}

/**
* @Author:
* @Description:获取输入日期的前n天
* @Date:
* @strData:参数格式:yyyy-MM-dd
* @return:返回格式:yyyy-MM-dd
*/
public static String getPreDateByDate(String strData, int diff) {
String preDate = "";
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(strData);
} catch (java.text.ParseException e) {
e.printStackTrace();
}

c.setTime(date);
int day1 = c.get(Calendar.DATE);
c.set(Calendar.DATE, day1 - diff);
preDate = sdf.format(c.getTime());
return preDate;
}

/**
* 将date转为calendar
* @param date
* @return
*/
public static Calendar getCalendar(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar;
}

/**
* 获取日期的年份
* @param date
* @return
*/
public static int getYear(Date date) {
return getCalendar(date).get(Calendar.YEAR);
}

/**
* 获取日期的月份
* @param date
* @return
*/
public static int getMonth(Date date) {
return getCalendar(date).get(Calendar.MONTH) + 1;
}


/**
* 判读时间差距,两个时间相差多少天,时,分,秒
* @param date
* @return
*/
public static Long getDay(Date date) {
Long days = null;
try {
//现在系统当前时间
Date currentTime = new Date();
//过去时间
Date pastTime = date;
long diff = currentTime.getTime() - pastTime.getTime();
days = diff / (1000 * 60 * 60 * 24);
} catch (Exception e) {
e.printStackTrace();
}
return days;
}

}

标签:return,String,Date,static,date,时间,工具,public
From: https://www.cnblogs.com/xingmeng63/p/17492417.html

相关文章

  • Maven项目架构管理工具的安装、使用和Idea配置Tomcat
    ——在我们Javaweb开发过程中,需要手动导入大量的jar包,这个时候我们需要一个工具帮助我们自动导入和管理,由此Maven诞生了。目录一、Maven的下载二、配置Maven环境变量三、阿里云镜像四、本地仓库五、创建Maven项目:1.maven依赖导入资源问题;2.无法解析maven依......
  • HashMap 、LinkedHashMap 、 Hashtable 、ConcurrentHashMap的使用区别和Collections
    LinkedHashMapLinkedHashMap的使用publicstaticvoidmain(String[]args){ LinkedHashMap<String,Integer>map=newLinkedHashMap<>(); //添加元素 Integerput1=map.put("大文",25); Integerput2=map.put("小文",26); Integer......
  • 收录CTF MISC方向中使用的在线工具网站
    文章目录说明集成工具站编码/解码Base家族Base64Base62Base58Base32Base85Base91Base92Base100进制编码十六进制编码八进制编码二进制编码摩尔斯电码URL编码Unicode编码敲击码/Tapcode社会主义价值观编码与佛论禅&新佛曰论禅与熊论道Brainfuck&Ook!Jsfuck盲文编码Emoji&emoji-aes......
  • JVM监控工具jstat使用介绍
    jstat是Java自带的一个命令行工具,用于监控JVM运行时的状态信息。它可以通过以下格式的命令来调用:jstat[option]<vmid>[<interval>[<count>]]其中,option表示需要查询的信息类型,如-gc,-class,-compiler等;vmid表示目标JVM的进程ID或者进程名;interval表示查询......
  • 一文讲清楚表单制作工具的用处
    如果想要提升表格制作效率和质量,用什么样的工具可以实现这一目的?在低代码开发时代,应用在线表单制作工具可以给广大用户提升办公协作效率,摒弃传统表格效率低下、制作不灵活等劣势,实现高效率发展。针对广大用户朋友关心的话题,小编就表单制作工具的优点、作用等问题,给大家做一个详细......
  • 实战:求年月日时间前后遇到的坑和解决方式
    前言这周接到一个时间转换任务需要处理,本来没什么问题,后来完成后发现时间有偏差,又重写了一遍代码,感觉很有记录必要性,希望看过的小伙伴可以避坑。照例,先说结论。正确实例:DateTimeFormatterformatter=DateTimeFormatter.ofPattern(CommonConstants.DATE_FORMAT);LocalDateTimeno......
  • Excel表格不改变格式下修改时间
    Excel表格在不改变格式的情况下,修改时间现象Excel表格有些时候在人工登记时难免出错,例如:写错时间或增加了其他字符出现了错误数据修改如果直接把'?'换成数字,则会出现,格式改变的情况如果是这样,会影响后续的处理。正确的修改方式要在前面加上分号'再看,格式就和其他的数据......
  • MySQL时间函数的选择
    Oracle中获取系统当前的时间,可以用sysdate、systimestamp等函数,在MySQL中,同样有类似的函数可以使用,碰巧看到eygle大神最近的文章,短短几行文字,就介绍了MySQL中获取系统当前时间的来龙去脉。在MySQL中,获得系统当前时间可以使用now()函数,这是最简单和应用最广的函数。除此之外,curre......
  • 使用 koin 作为 Android 注入工具,真香
    koin为Android提供了简单易用的API接口,让你简单轻松地接入koin框架。[koin在Android中的gradle配置]mp.weixin.qq.com/s/bscC7mO4O…1.Application类中startKoin从您的类中,您可以使用该函数并注入Android上下文,如下所示:ApplicationstartKoinandroidContextclass......
  • FlutterUnit 工具集录 | IconFont 类代码自动生成
    1.IconFont类代码生成器的作用首先介绍一下FlutterUnit中,代码生成菜单下的IconFont工具的作用。它主要解决Flutter项目中自定义字体图标使用的问题:字体图标调用类代码的自动生成。pubspec.yaml中字体图标节点的自动配置。多个自定义字体图标节点的支持。一键自动生成相......