日期格式工具

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;

? ? ? ? }

????}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。