java Dateutil 操作类
Posted 正怒月神
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java Dateutil 操作类相关的知识,希望对你有一定的参考价值。
废话不多说了,直接上代码。
方法内容:
1 yyyy-MM-dd 格式化时间
2 yyyy-MM-dd HH:mm:ss 格式化时间
3 获得年份
4 获得月份
5 获得日期
6 当前时间的加减操作
7 两个时间的差值操作
package com.tenyears.common.utils;
import org.apache.commons.lang3.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.Calendar;
import java.util.Date;
public class DateUtil {
public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
public static Date getCurDate() {
Date currDate = new Date();
return currDate;
}
public static String format(Date date) {
if (date != null) {
return format.format(date);
}
return null;
}
public static String format2(Date date) {
if (date != null) {
return format2.format(date);
}
return null;
}
public static Date parse2(String dateStr) {
if (StringUtils.isNoneBlank(dateStr))
try {
return format2.parse(dateStr);
} catch (ParseException e) {
LogerUtil.error(LogerUtil.getPrintStr(e));
}
return null;
}
public static Date parse(String dateStr) {
if (StringUtils.isNoneBlank(dateStr))
try {
return format.parse(dateStr);
} catch (ParseException e) {
LogerUtil.error(LogerUtil.getPrintStr(e));
}
return null;
}
/**
*
* @param date
* @return date对应的年
*/
public static int getYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.YEAR);
}
public static int getNowYear() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
return calendar.get(Calendar.YEAR);
}
/**
*
* @param date
* @return date对应的月
*/
public static int getMonth(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.MONTH) + 1;
}
public static int getNowMonth() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
return calendar.get(Calendar.MONTH) + 1;
}
/**
* @param date
* @return 对应的天
*/
public static int getDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.DAY_OF_MONTH);
}
public static int getNowDay() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
return calendar.get(Calendar.DAY_OF_MONTH);
}
/**
* 时间加减
* @param date 时间
* @param calendarType Calendar.Year / Calendar.Month.....
* @param value value
* @return
*/
public static Date add(Date date,int calendarType,int value)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(calendarType, value);//当前时间减去一年,即一年前的时间
return calendar.getTime();//获取一年前的时间,或者一个月前的时间
}
/**
* 得到两个时间的差值
* @param d1
* @param d2
* @param chronoUnit ChronoUnit.Year / ChronoUnit.Month....
* @return
*/
public static long subDate(Date d1,Date d2,ChronoUnit chronoUnit)
{
LocalDate afterDate = d1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate beforeDate = d2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
long diff = chronoUnit.between(beforeDate, afterDate);
return diff;
}
/**
* 得到两个时间相减的年数
* @param d1
* @param d2
* @return
*/
public static long subYears(Date d1,Date d2)
{
LocalDate afterDate = d1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate beforeDate = d2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
long diff = ChronoUnit.YEARS.between(beforeDate, afterDate);
return diff;
}
/**
* 得到两个时间相减的月数
* @param d1
* @param d2
* @return
*/
public static long subMonths(Date d1,Date d2)
{
LocalDate afterDate = d1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate beforeDate = d2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
long diff = ChronoUnit.MONTHS.between(beforeDate, afterDate);
return diff;
}
/**
* 得到两个时间相减的天数
* @param d1
* @param d2
* @return
*/
public static long subDays(Date d1,Date d2)
{
LocalDate afterDate = d1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate beforeDate = d2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
long diff = ChronoUnit.DAYS.between(beforeDate, afterDate);
return diff;
}
/**
* 得到两个时间相减的小时数
* @param d1
* @param d2
* @return
*/
public static long subHours(Date d1,Date d2)
{
LocalDate afterDate = d1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate beforeDate = d2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
long diff = ChronoUnit.HOURS.between(beforeDate, afterDate);
return diff;
}
/**
* 得到两个时间相减的分钟数
* @param d1
* @param d2
* @return
*/
public static long subMinutes(Date d1,Date d2)
{
LocalDate afterDate = d1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate beforeDate = d2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
long diff = ChronoUnit.MINUTES.between(beforeDate, afterDate);
return diff;
}
/**
* 得到两个时间相减的秒钟数
* @param d1
* @param d2
* @return
*/
public static long subSeconds(Date d1,Date d2)
{
LocalDate afterDate = d1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate beforeDate = d2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
long diff = ChronoUnit.SECONDS.between(beforeDate, afterDate);
return diff;
}
}
以上是关于java Dateutil 操作类的主要内容,如果未能解决你的问题,请参考以下文章
4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)