public class DateUtil {
????public static StringgetNowDate(){
????????SimpleDateFormat df =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設(shè)置日期格式
? ? ? ? return df.format(new Date());
? ? }
????public static DategetNowDateTwo(){
????????Date date =new Date();
? ? ? ? return date;
? ? }
????private static String[]formats =new String[3];
? ? static {
????????formats[0] ="yyyy-MM-dd";
? ? ? ? formats[1] ="yyyy/MM/dd";
? ? ? ? formats[2] ="yyyy.MM.dd";
? ? }
? ? /**
????????* yyyyMMddHHmmss
????????*
? ? ???? * @return
? ? */
? ? public static StringgetNowDateByyyyyMMddHHmmss() {
????????Date currentTime = Calendar.getInstance().getTime();
? ? ? ? SimpleDateFormat formatter =new SimpleDateFormat("yyyyMMddHHmmss");
? ? ? ? String dateString = formatter.format(currentTime);
? ? ? ? return dateString;
? ? }
????public static StringgetNowDateByyyyyMMddHHmmss(String date) {
????????String dateString =null;
? ? ? ? if (EmptyUtil.isEmpty(date)) {
????????????return null;
? ? ? ? }
????????SimpleDateFormat formart =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
? ? ? ? SimpleDateFormat formatter =new SimpleDateFormat("yyyyMMddHHmmss");
? ? ? ? try {
????????????dateString = formatter.format(formart.parse(date));
? ? ? ? ? ? System.out.println(dateString);
? ? ? ? }catch (ParseException e) {
????????????e.printStackTrace();
? ? ? ? ? ? dateString =null;
? ? ? ? }
????????????return dateString;
? ? }
????public static StringgetNowDateDay() {
????????Date currentTime = Calendar.getInstance().getTime();
? ? ? ? SimpleDateFormat formatter =new SimpleDateFormat("yyyy-MM-dd");
? ? ? ? String dateString = formatter.format(currentTime);
? ? ? ? return dateString;
? ? }
????/**
? ? * 判斷是否為時(shí)間格式,支持‘-’,‘/’,‘.’
????*
? ? * @param dateStr
? ? * @return
? ? */
? ? public static boolean isDate(String dateStr) {
????????SimpleDateFormat simple =null;
? ? ? ? for (String format :formats) {
????????????simple =new SimpleDateFormat(format);
? ? ? ? ? ? try {
????????????????simple.parse(dateStr);
????????????????return true;
? ? ? ? ? ? }catch (ParseException e) {
????????????}
? ? ? ? }
????????return false;
? ? ? }
????/**
? ? * 把日期字符串格式化成日期類(lèi)型
? ? *
? ? * @param dateStr
? ? * @param format
? ? * @return
? ? */
? ? public static Dateconvert2Date(String dateStr, String format) {
????????SimpleDateFormat simple =new SimpleDateFormat(format);
? ? ? ? try {
????????????simple.setLenient(false);
? ? ? ? ? ? return simple.parse(dateStr);
? ? ? ? }catch (Exception e) {
????????????return null;
? ? ? ? }
????}
????/**
? ? * 把日期類(lèi)型格式化成字符串
? ? *
? ? * @param date
? ? * @param format
? ? * @return
? ? */
? ? public static Stringconvert2String(Date date, String format) {
????????SimpleDateFormat formater =new SimpleDateFormat(format);
? ? ? ? try {
????????????return formater.format(date);
? ? ? ? }catch (Exception e) {
????????????return null;
? ? ? ? }
????}
????/**
? ? * 轉(zhuǎn)sql的time格式
? ? *
? ? * @param date
? ? * @return
? ? */
? ? public static java.sql.TimestampconvertSqlTime(Date date) {
????????java.sql.Timestamp timestamp =new java.sql.Timestamp(date.getTime());
? ? ? ? return timestamp;
? ? }
????/**
? ? * 轉(zhuǎn)sql的日期格式
? ? *
? ? * @param date
? ? * @return
? ? */
? ? public static java.sql.DateconvertSqlDate(Date date) {
????????java.sql.Date Datetamp =new java.sql.Date(date.getTime());
? ? ? ? return Datetamp;
? ? }
????/**
? ? * 獲取當(dāng)前日期
? ? *
? ? * @param format
? ? * @return
? ? */
? ? public static StringgetCurrentDate(String format) {
????????return new SimpleDateFormat(format).format(new Date());
? ? }
????/**
? ? * 獲取時(shí)間戳
? ? *
? ? * @return
? ? */
? ? public static long getTimestamp() {
????????return System.currentTimeMillis();
? ? }
????/**
? ? * 獲取月份的天數(shù)
? ? *
? ? * @param year
? ? * @param month
? ? * @return
? ? */
? ? public static int getDaysOfMonth(int year, int month) {
????????Calendar calendar = Calendar.getInstance();
? ? ? ? calendar.set(year, month -1, 1);
? ? ? ? return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
? ? }
????/**
? ? * 獲取日期的年
? ? *
? ? * @param date
? ? * @return
? ? */
? ? public static int getYear(Date date) {
????????Calendar calendar = Calendar.getInstance();
? ? ? ? calendar.setTime(date);
? ? ? ? return calendar.get(Calendar.YEAR);
? ? }
????/**
? ? * 獲取日期的月
? ? *
? ? * @param date
? ? * @return
? ? */
? ? public static int getMonth(Date date) {
????????Calendar calendar = Calendar.getInstance();
? ? ? ? calendar.setTime(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.DATE);
? ? }
????/**
? ? * 獲取日期的時(shí)
? ? *
? ? * @param date
? ? * @return
? ? */
? ? public static int getHour(Date date) {
????????Calendar calendar = Calendar.getInstance();
? ? ? ? calendar.setTime(date);
? ? ? ? return calendar.get(Calendar.HOUR);
? ? }
????/**
? ? * 獲取日期的分種
? ? *
? ? * @param date
? ? * @return
? ? */
? ? public static int getMinute(Date date) {
????????Calendar calendar = Calendar.getInstance();
? ? ? ? calendar.setTime(date);
? ? ? ? return calendar.get(Calendar.MINUTE);
? ? }
????/**
? ? * 獲取日期的秒
? ? *
? ? * @param date
? ? * @return
? ? */
? ? public static int getSecond(Date date) {
????????Calendar calendar = Calendar.getInstance();
? ? ? ? calendar.setTime(date);
? ? ? ? return calendar.get(Calendar.SECOND);
? ? }
????/**
? ? * 獲取星期幾
? ? *
? ? * @param date
? ? * @return
? ? */
? ? public static int getWeekDay(Date date) {
????????Calendar calendar = Calendar.getInstance();
? ? ? ? calendar.setTime(date);
? ? ? ? int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
? ? ? ? return dayOfWeek -1;
? ? }
????/**
? ? * 獲取哪一年共有多少周
? ? *
? ? * @param year
? ? * @return
? ? */
? ? public static int getMaxWeekNumOfYear(int year) {
????????Calendar c =new GregorianCalendar();
? ? ? ? c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);
? ? ? ? return getWeekNumOfYear(c.getTime());
? ? }
????/**
? ? * 取得某天是一年中的多少周
? ? *
? ? * @param date
? ? * @return
? ? */
? ? public static int getWeekNumOfYear(Date date) {
????????Calendar c =new GregorianCalendar();
? ? ? ? c.setFirstDayOfWeek(Calendar.MONDAY);
? ? ? ? c.setMinimalDaysInFirstWeek(7);
? ? ? ? c.setTime(date);
? ? ? ? return c.get(Calendar.WEEK_OF_YEAR);
? ? }
????/**
? ? * 取得某天所在周的第一天
? ? *
? ? * @param date
? ? * @return
? ? */
? ? public static DategetFirstDayOfWeek(Date date) {
????????Calendar c =new GregorianCalendar();
? ? ? ? c.setFirstDayOfWeek(Calendar.MONDAY);
? ? ? ? c.setTime(date);
? ? ? ? c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
? ? ? ? return c.getTime();
? ? }
????/**
? ? * 取得某天所在周的最后一天
? ? *
? ? * @param date
? ? * @return
? ? */
? ? public static DategetLastDayOfWeek(Date date) {
????????Calendar c =new GregorianCalendar();
? ? ? ? c.setFirstDayOfWeek(Calendar.MONDAY);
? ? ? ? c.setTime(date);
? ? ? ? c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() +6);
? ? ? ? return c.getTime();
? ? }
????/**
? ? * 取得某年某周的第一天 對(duì)于交叉:2008-12-29到2009-01-04屬于2008年的最后一周,2009-01-05為2009年第一周的第一天
? ? *
? ? * @param year
? ? * @param week
? ? * @return
? ? */
? ? public static DategetFirstDayOfWeek(int year, int week) {
????????Calendar calFirst = Calendar.getInstance();
? ? ? ? calFirst.set(year, 0, 7);
? ? ? ? Date firstDate =getFirstDayOfWeek(calFirst.getTime());
? ? ? ? Calendar firstDateCal = Calendar.getInstance();
? ? ? ? firstDateCal.setTime(firstDate);
? ? ? ? Calendar c =new GregorianCalendar();
? ? ? ? c.set(Calendar.YEAR, year);
? ? ? ? c.set(Calendar.MONTH, Calendar.JANUARY);
? ? ? ? c.set(Calendar.DATE, firstDateCal.get(Calendar.DATE));
? ? ? ? Calendar cal = (GregorianCalendar) c.clone();
? ? ? ? cal.add(Calendar.DATE, (week -1) *7);
? ? ? ? firstDate =getFirstDayOfWeek(cal.getTime());
? ? ? ? return firstDate;
? ? }
????/**
? ? * 取得某年某周的最后一天 對(duì)于交叉:2008-12-29到2009-01-04屬于2008年的最后一周, 2009-01-04為
? ? * 2008年最后一周的最后一天
? ? *
? ? * @param year
? ? * @param week
? ? * @return
? ? */
? ? public static DategetLastDayOfWeek(int year, int week) {
????????Calendar calLast = Calendar.getInstance();
? ? ? ? calLast.set(year, 0, 7);
? ? ? ? Date firstDate =getLastDayOfWeek(calLast.getTime());
? ? ? ? Calendar firstDateCal = Calendar.getInstance();
? ? ? ? firstDateCal.setTime(firstDate);
? ? ? ? Calendar c =new GregorianCalendar();
? ? ? ? c.set(Calendar.YEAR, year);
? ? ? ? c.set(Calendar.MONTH, Calendar.JANUARY);
? ? ? ? c.set(Calendar.DATE, firstDateCal.get(Calendar.DATE));
? ? ? ? Calendar cal = (GregorianCalendar) c.clone();
? ? ? ? cal.add(Calendar.DATE, (week -1) *7);
? ? ? ? Date lastDate =getLastDayOfWeek(cal.getTime());
? ? ? ? return lastDate;
? ? }
????private static Dateadd(Date date, int calendarField, int amount) {
????????if (date ==null) {
????????????throw new IllegalArgumentException("The date must not be null");
? ? ? ? }else {
????????????Calendar c = Calendar.getInstance();
? ? ? ? ? ? c.setTime(date);
? ? ? ? ? ? c.add(calendarField, amount);
? ? ? ? ? ? return c.getTime();
? ? ? ? }
????}
????/*
? ? * 1則代表的是對(duì)年份操作, 2是對(duì)月份操作, 3是對(duì)星期操作, 5是對(duì)日期操作, 11是對(duì)小時(shí)操作, 12是對(duì)分鐘操作, 13是對(duì)秒操作,? ? * 14是對(duì)毫秒操作*/
? ? /**
? ? * 增加年
? ? *
? ? * @param date
? ? * @param amount
? ? * @return
? ? */
? ? public static DateaddYears(Date date, int amount) {
????????return add(date, 1, amount);
? ? }
????/**
? ? * 增加月
? ? *
? ? * @param date
? ? * @param amount
? ? * @return
? ? */
? ? public static DateaddMonths(Date date, int amount) {
????????return add(date, 2, amount);
? ? }
????/**
? ? * 增加周
? ? *
? ? * @param date
? ? * @param amount
? ? * @return
? ? */
? ? public static DateaddWeeks(Date date, int amount) {
????????return add(date, 3, amount);
? ? }
????/**
? ? * 增加天
? ? *
? ? * @param date
? ? * @param amount
? ? * @return
? ? */
? ? public static DateaddDays(Date date, int amount) {
????????return add(date, 5, amount);
? ? }
????/**
? ? * 增加時(shí)
? ? *
? ? * @param date
? ? * @param amount
? ? * @return
? ? */
? ? public static DateaddHours(Date date, int amount) {
????????return add(date, 11, amount);
? ? }
????/**
? ? * 增加分
? ? *
? ? * @param date
? ? * @param amount
? ? * @return
? ? */
? ? public static DateaddMinutes(Date date, int amount) {
????????return add(date, 12, amount);
? ? }
????/**
? ? * 增加秒
? ? *
? ? * @param date
? ? * @param amount
? ? * @return
? ? */
? ? public static DateaddSeconds(Date date, int amount) {
????????return add(date, 13, amount);
? ? }
????/**
? ? * 增加毫秒
? ? *
? ? * @param date
? ? * @param amount
? ? * @return
? ? */
? ? public static DateaddMilliseconds(Date date, int amount) {
????????return add(date, 14, amount);
? ? }
????/**
? ? * time差
? ? *
? ? * @param before
? ? * @param after
? ? * @return
? ? */
? ? public static long diffTimes(Date before, Date after) {
????????return after.getTime() - before.getTime();
? ? }
????/**
? ? * 秒差
? ? *
? ? * @param before
? ? * @param after
? ? * @return
? ? */
? ? public static long diffSecond(Date before, Date after) {
????????return (after.getTime() - before.getTime()) /1000;
? ? }
????/**
? ? * 毫秒差
? ? *
? ? * @param before
? ? * @param after
? ? * @return
? ? */
? ? public static long diffhaomiao(Date before, Date after) {
????????return (after.getTime() - before.getTime());
? ? }
????/**
? ? * 分種差
? ? *
? ? * @param before
? ? * @param after
? ? * @return
? ? */
? ? public static int diffMinute(Date before, Date after) {
????????return (int) (after.getTime() - before.getTime()) /1000 /60;
? ? }
????/**
? ? * 時(shí)差
? ? *
? ? * @param before
? ? * @param after
? ? * @return
? ? */
? ? public static int diffHour(Date before, Date after) {
????????return (int) (after.getTime() - before.getTime()) /1000 /60 /60;
? ? }
????/**
? ? * 時(shí)差
? ? *
? ? * @param before
? ? * @param after
? ? * @return
? ? */
? ? public static double diffHourWithDouble(Date before, Date after) {
????????return (double) (after.getTime() - before.getTime())/1000 /60 /60;
? ? }
????/**
? ? * 天數(shù)差
? ? *
? ? * @param before
? ? * @param after
? ? * @return
? ? */
? ? public static int diffDay(Date before, Date after) {
????????return Integer.parseInt(String.valueOf(((after.getTime() - before.getTime()) /86400000)));
? ? }
????/**
? ? * 月差
? ? *
? ? * @param before
? ? * @param after
? ? * @return
? ? */
? ? public static int diffMonth(Date before, Date after) {
????????int monthAll =0;
? ? ? ? int yearsX =diffYear(before, after);
? ? ? ? Calendar c1 = Calendar.getInstance();
? ? ? ? Calendar c2 = Calendar.getInstance();
? ? ? ? c1.setTime(before);
? ? ? ? c2.setTime(after);
? ? ? ? int monthsX = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH);
? ? ? ? monthAll = yearsX *12 + monthsX;
? ? ? ? int daysX = c2.get(Calendar.DATE) - c1.get(Calendar.DATE);
? ? ? ? if (daysX >0) {
????????????????monthAll = monthAll +1;
? ? ? ? }
? ? ? ? return monthAll;
? ? }
????/**
? ? * 年差
? ? *
? ? * @param before
? ? * @param after
? ? * @return
? ? */
? ? public static int diffYear(Date before, Date after) {
????????return getYear(after) -getYear(before);
? ? }
????/**
? ? * 設(shè)置23:59:59
????*
? ? * @param date
? ? * @return
? ? */
? ? public static DatesetEndDay(Date date) {
????????Calendar calendar = Calendar.getInstance();
? ? ? ? calendar.setTime(date);
? ? ? ? calendar.set(Calendar.HOUR_OF_DAY, 23);
? ? ? ? calendar.set(Calendar.MINUTE, 59);
? ? ? ? calendar.set(Calendar.SECOND, 59);
? ? ? ? return calendar.getTime();
? ? }
????/**
? ? * 設(shè)置00:00:00
????*
? ? * @param date
? ? * @return
? ? */
? ? public static DatesetStartDay(Date date) {
????????Calendar calendar = Calendar.getInstance();
? ? ? ? calendar.setTime(date);
? ? ? ? calendar.set(Calendar.HOUR_OF_DAY, 00);
? ? ? ? calendar.set(Calendar.MINUTE, 00);
? ? ? ? calendar.set(Calendar.SECOND, 00);
? ? ? ? return calendar.getTime();
? ? }
????/**
? ? * 獲取兩個(gè)時(shí)間相差多少
? ? *
? ? * @param endDate
? ? * @param startDate
? ? * @return
? ? */
? ? public static IntegergetDatePoor(Date endDate, Date startDate) {
????????long nd =1000 *24 *60 *60;
? ? ? ? long nh =1000 *60 *60;
? ? ? ? long nm =1000 *60;
? ? ? ? // long ns = 1000;
? ? ? ? // 獲得兩個(gè)時(shí)間的毫秒時(shí)間差異
? ? ? ? long diff = endDate.getTime() - startDate.getTime();
? ? ? ? // 計(jì)算差多少天
? ? ? ? long day = diff / nd;
? ? ? ? // 計(jì)算差多少小時(shí)
? ? ? ? long hour = diff % nd / nh;
? ? ? ? // 計(jì)算差多少分鐘
? ? ? ? long min = diff % nd % nh / nm;
? ? ? ? // 計(jì)算差多少秒//輸出結(jié)果
? ? ? ? // long sec = diff % nd % nh % nm / ns;
? ? ? ? String abc = day +"天" + hour +"小時(shí)" + min +"分鐘";
? ? ? ? return Integer.parseInt(hour +"");
? ? }
????/**
? ? * 比較兩個(gè)時(shí)間的大小
? ? * 1:date1>date2
? ? * -1: date1
? ? * 0: date1=date2
????*
? ? * @param DATE1
? ? * @param DATE2
? ? * @return
? ? */
? ? public static int compare_date(String DATE1, String DATE2) {
????????DateFormat df =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
? ? ? ? try {
????????????Date dt1 = df.parse(DATE1);
? ? ? ? ? ? Date dt2 = df.parse(DATE2);
? ? ? ? ? ? if (dt1.getTime() > dt2.getTime()) {
????????????????System.out.println("dt1>dt2");
? ? ? ? ? ? ? ? return 1;
? ? ? ? ? ? }else if (dt1.getTime() < dt2.getTime()) {
????????????????System.out.println("dt1<dt2");
? ? ? ? ? ? ? ? return -1;
? ? ? ? ? ? }else {
????????????????return 0;
? ? ? ? ? ? }
????????}catch (Exception exception) {
????????????exception.printStackTrace();
? ? ? ? }
????????return 0;
? ? }
????/**
? ? * @param nowDate? 要比較的時(shí)間
? ? * @param startDate 開(kāi)始時(shí)間
? ? * @param endDate? 結(jié)束時(shí)間
? ? * @return true在時(shí)間段內(nèi),false不在時(shí)間段內(nèi)
? ? * @throws Exception
????*/
? ? public static boolean hourMinuteBetween(String nowDate, String startDate, String endDate)throws Exception {
? ? ? ? SimpleDateFormat format =new SimpleDateFormat("HH:mm:ss");
? ? ? ? Date now = format.parse(nowDate);
? ? ? ? Date start = format.parse(startDate);
? ? ? ? Date end = format.parse(endDate);
? ? ? ? long nowTime = now.getTime();
? ? ? ? long startTime = start.getTime();
? ? ? ? long endTime = end.getTime();
? ? ? ? return nowTime >= startTime && nowTime <= endTime;
? ? }
????/**
? ? * 比較
? ? *
? ? * @param date1
? ? * @param date2
? ? * @return
? ? */
? ? public static boolean timebetweenHours(String date1, String date2, long betweenNum){
????try{
????????????SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
? ? ? ? ? ? return sdf.parse(date2).getTime() - sdf.parse(date1).getTime() <= betweenNum *60L *60L *1000L;
? ? ? ? }catch(Exception e){
????????????e.printStackTrace();
? ? ? ? }
????????????return false;
? ? }
????/**
? ? * 獲取時(shí)間差
? ? * @return
? ? */
? ? public static StringgetDifferenceTime(Date start,Date end){
????????long l =diffhaomiao(start, end);
? ? ? ? return l+"毫秒";
? ? }
????/**
? ? * 判斷當(dāng)前時(shí)間是否在[startTime, endTime]區(qū)間,注意時(shí)間格式要一致
? ? *
? ? * @param nowTime 當(dāng)前時(shí)間
? ? * @param startTime 開(kāi)始時(shí)間
? ? * @param endTime 結(jié)束時(shí)間
? ? * @return
? ? * @author Another
*/
? ? public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
????????if (nowTime.getTime() == startTime.getTime()
????????|| nowTime.getTime() == endTime.getTime()) {
????????????return true;
? ? ? ? }
? ? ? ? Calendar date = Calendar.getInstance();
? ? ? ? date.setTime(nowTime);
? ? ? ? Calendar begin = Calendar.getInstance();
? ? ? ? begin.setTime(startTime);
? ? ? ? Calendar end = Calendar.getInstance();
? ? ? ? end.setTime(endTime);
? ? ? ? if (date.after(begin) && date.before(end)) {
????????????return true;
? ? ? ? }else {
????????????return false;
? ? ? ? }
????}
}