MyDateUtils.class
package com.chd.fssc.receivable.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.chrono.ChronoZonedDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
/**
* 日期工具类
*
*/
public class MyDateUtil {
public static long oneDay = 24 * 60 * 60 * 1000;
public static String format(Date date) {
if (date == null) {
return "";
}
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
return formater.format(date);
}
public static String format(Date date, String patern) {
if (date == null) {
return "";
}
SimpleDateFormat formater = new SimpleDateFormat(patern);
return formater.format(date);
}
/**
* 判断date是否在flag之后或相等
*/
public static boolean isAfterOrEquals(Date flag, Date date) {
return date.getTime() >= flag.getTime();
}
/**
* 字符串转成Date型
*
* @param dateStr
* @param pattern
* @return
*/
public static Date textToDate(String dateStr, String pattern) {
try {
Date date = new SimpleDateFormat(pattern).parse(dateStr);
return date;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/**
* 判断date是否在flag之前
*/
public static boolean isBefore(Date flag, Date date) {
return date.getTime() < flag.getTime();
}
public static boolean isStartWrap(Date flagStart, Date flagEnd, Date dateStart) {
return dateStart.before(flagEnd) && dateStart.after(flagStart)
|| dateStart.equals(flagStart) || dateStart.equals(flagEnd);
}
public static boolean isEndWrap(Date flagStart, Date flagEnd, Date dateEnd) {
return dateEnd.before(flagEnd) && dateEnd.after(flagStart)
|| dateEnd.equals(flagStart) || dateEnd.equals(flagEnd);
}
/**
* example: DateUtil.getYear(new Date(182,4,7)) <p/> result: 1982
*/
public static int getYear(Date date) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
return year;
}
/**
* example: DateUtil.getMonth(new Date(182,4,7)) <p/> result: 5
*/
public static int getMonth(Date date) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int month = calendar.get(Calendar.MONTH) + 1;
return month;
}
/**
* example: DateUtil.getDate(new Date(182,4,7)) <p/> result: 7
*/
public static int getDate(Date date) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
int date2 = calendar.get(Calendar.DATE);
return date2;
}
/**
* example: DateUtil.addYears(new Date(182,4,7), 22) <p/> result:
*/
public static Date addYears(Date date, int yearNum) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(Calendar.YEAR, yearNum);
return calendar.getTime();
}
/**
* example: DateUtil.addMonths(new Date(182,4,7), 13) <p/> result:
*/
public static Date addMonths(Date date, int monthNum) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(Calendar.MONTH, monthNum);
return calendar.getTime();
}
/**
* example: DateUtil.addDates(new Date(182,4,7), 13) <p/> result:
*/
public static Date addDates(Date date, int dateNum) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(Calendar.DATE, dateNum);
return calendar.getTime();
}
/**
* example: DateUtil.createDate(1982,5,7) <p/> result: 1982年5月7日
*/
public static Date createDate(int year, int month, int date) {
Calendar calendar = new GregorianCalendar(year, month - 1, date);
return calendar.getTime();
}
/**
* 将指定格式的日期/时间字符串转换成Date格式
*
* @param strDate String类型,日期字符
* @param strFormat String类型,格式
* @return Date类型
* @throws Exception
*/
public static Date toUtilDate(String strDate, String strFormat) {
try {
if (strDate == null || strDate.equals("")) {
return null;
} else {
SimpleDateFormat _formatdate = new SimpleDateFormat(strFormat, Locale.getDefault());
Date _date = new Date((_formatdate.parse(strDate)).getTime());
return _date;
}
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
/**
* 将指定格式的日期/时间字符串转换成Date格式
*
* @param strDate String类型,日期字符
* @param strFormat String类型,格式
* @return Date类型
*/
public static java.sql.Date toSQLDate(String strDate, String strFormat) {
try {
if (strDate == null || strDate.equals("")) {
return null;
} else {
SimpleDateFormat _formatdate = new SimpleDateFormat(strFormat,
Locale.getDefault());
java.sql.Date _date = new java.sql.Date((_formatdate
.parse(strDate)).getTime());
return _date;
}
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
/**
* 取得系统当前时间
*/
public static String getCurrentSysTime(int iType) {
Date dtNow = new Date(System.currentTimeMillis());
String dateString = "";
try {
SimpleDateFormat formatter = null;
switch (iType) {
case 1:
formatter = new SimpleDateFormat("yyyy.MM.dd");
break;
case 2:
formatter = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
break;
case 3:
formatter = new SimpleDateFormat("yyyy.MM.dd hh:mm a");
break;
case 4:
formatter = new SimpleDateFormat("yyyy-MM-dd");
break;
case 5:
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
break;
case 6:
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm a");
break;
case 7:
formatter = new SimpleDateFormat("yyyy-MM");
break;
case 8:
formatter = new SimpleDateFormat("yyyyMMdd");
break;
default:
formatter = new SimpleDateFormat("yyyy.MM.dd");
break;
}
dateString = formatter.format(dtNow);
} catch (Exception e) {
e.printStackTrace();
dateString = "";
}
return dateString;
}
/**
* 获得两个日期相隔天数
*
* @param dtBeginDate
* @param dtEndDate
* @return
*/
public static long intervalDays(Date dtBeginDate, Date dtEndDate) {
long interval = 0;
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String begindate = format.format(dtBeginDate);
String enddate = format.format(dtEndDate);
Date date_begindate = format.parse(begindate);
Date date_enddate = format.parse(enddate);
interval = date_enddate.getTime() - date_begindate.getTime();
interval = interval / (24 * 60 * 60 * 1000);
} catch (ParseException e) {
e.printStackTrace();
}
return interval;
}
/**
* 获得两个日期相隔天数
*
* @param date
* @return 周一到周七 返回 1-7
*/
public static int getWeekNum(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int day = cal.get(Calendar.DAY_OF_WEEK);
day = day - 1;
if (day == 0) day = 7;
return day;
}
//传入一个时间,得到该时间所在月的第一天
public static Date getMonthFirstDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, calendar
.getActualMinimum(Calendar.DAY_OF_MONTH));
return calendar.getTime();
}
//传入一个时间,得到该时间所在月的最后一天
public static Date getMonthLastDay(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
return calendar.getTime();
}
//传入一个时间和月份,得到相加后的时间
public static Date getDateAddMonth(Date date, int num) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, num);
return calendar.getTime();
}
/**
* 只精确到日期,舍去时分秒
*
* @param time
* @return Date
*/
public static Date correctToDate(Date time) {
GregorianCalendar gc1 = new GregorianCalendar();
gc1.setTime(time);
gc1.clear(Calendar.MILLISECOND);
gc1.clear(Calendar.SECOND);
gc1.clear(Calendar.MINUTE);
gc1.set(Calendar.HOUR_OF_DAY, 0);
return gc1.getTime();
}
/**
* 日期比较函数,相等返回0,大于大于零的值,小于返回小于零的值
*/
public static int dateCompare(Date dateA, Date dateB) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String datea = format.format(dateA);
String dateb = format.format(dateB);
return datea.compareTo(dateb);
}
/**
* 日期比较函数,相等返回0,大于大于零的值,小于返回小于零的值(只比较年月)
*/
public static int dateCompareOne(Date dateA, Date dateB) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
String datea = format.format(dateA);
String dateb = format.format(dateB);
return datea.compareTo(dateb);
}
/*java.util.Date转化成LocalDat*/
public static LocalDate DateToLocaleDate(Date date) {
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
return instant.atZone(zoneId).toLocalDate();
}
/*LocalDate转化成 java.util.Date*/
public static Date LocalDateToDate(LocalDate localDate) {
ZoneId zoneId = ZoneId.systemDefault();
ChronoZonedDateTime<LocalDate> zonedDateTime = localDate.atStartOfDay(zoneId);
return Date.from(zonedDateTime.toInstant());
}
}