您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Java日期操作方法工具類的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
本文實例講述了Java日期操作方法工具類,具體如下:
package com.gcloud.common; import org.apache.http.util.TextUtils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.regex.Pattern; /** * 日期時間工具類 * Created by charlin on 2017/9/3. */ public class DateUtil { public static final String CHINA_DATE_FORMAT = "yyyy年MM月dd日"; public static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static final String DATE_FORMAT = "yyyy-MM-dd"; public static final String TIME_FORMAT = "HH:mm:ss"; //----------------判斷----------------------------------------------- /** * 是否是潤年 * @param yearNum * @return */ public static boolean isLeapYear(int yearNum) { boolean isLeep = false; if ((yearNum % 4 == 0) && (yearNum % 100 != 0)) isLeep = true; else if (yearNum % 400 == 0) isLeep = true; else { isLeep = false; } return isLeep; } /** * 判斷是否是日期 * * @param date * @return */ public static boolean isDate(String date) { //判斷年月日的正則表達式,接受輸入格式為2010-12-24,可接受平年閏年的日期 String regex = "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)"; Pattern pattern = Pattern.compile(regex); return pattern.matcher(date).matches(); } /** * 驗證是不是生日 * * @param birthday * @return */ public static boolean verifyBirthDay(String birthday) { if (TextUtils.isEmpty(birthday)) return false; if (!birthday.contains("-")) return false; String[] arr = birthday.split("-"); if (null == arr || arr.length != 3 || arr[0].length() != 4 || arr[1].length() != 2 || arr[2].length() != 2) return false; int year = getYear(new Date()); int birthYear = Integer.parseInt(arr[0]); if (birthYear <= 1900 || birthYear > year) return false; String curDate = formatDate(new Date(), DATE_FORMAT); if (birthday.compareTo(curDate) > 0) return false; return isDate(birthday); } //-------------------自動轉化-------------------------------------------- /** * 把字符串自動轉化為時間格式 * * @param dateStr * @return */ public static Date parseDateByAuto(String dateStr) { if (StringUtil.isEmpty(dateStr)) { return null; } String format = DATE_FORMAT; if (dateStr.indexOf("/") > -1) { format = format.replace("-", "/"); } if (dateStr.indexOf(":") != -1) { format += " HH:mm"; } //存在秒 if (dateStr.indexOf(":") != dateStr.lastIndexOf(":")) { format += ":ss"; } return parseDate(dateStr, format); } /** * 自動識別格式 * @param date * @return */ public static String formatDateByAuto(Date date){ String format = DATE_FORMAT; if( !(date instanceof java.sql.Date) && (date.getSeconds()>0||date.getMinutes()>0||date.getHours()>0)){ format = DATETIME_FORMAT; } return formatDate(date, format); } //------------當前日期與時間 -------------------------------- /**取當前日期*/ public static Date getCurrDate() {return parseDate(formatDate(new Date())); } /**取當前時間*/ public static Date getCurrDateTime() {return parseDate(formatDate(new Date())); } /**取當前日期*/ public static String getCurrDateStr() { return formatDate(new Date()); } /**取當前時間*/ public static String getCurrDateTimeStr() { return formatDate(new Date(), DATETIME_FORMAT);} public static String formatCurrDate() {return formatDate(new Date(),DATE_FORMAT); } public static String formatCurrDateTime() {return formatDate(new Date(),DATETIME_FORMAT);} public static String formatCurrDateToS(String strFormat) {return formatDate(new Date(), strFormat); } //-----------時間計算-------------------------------------------- /** * 時間相減 * @param strDateBegin * @param strDateEnd * @param iType * @return */ public static int getDiffDate(String strDateBegin, String strDateEnd, int iType) { Calendar calBegin = Calendar.getInstance(); calBegin.setTime(parseDate(strDateBegin, DATETIME_FORMAT)); Calendar calEnd = Calendar.getInstance(); calBegin.setTime(parseDate(strDateEnd, DATETIME_FORMAT)); long lBegin = calBegin.getTimeInMillis(); long lEnd = calEnd.getTimeInMillis(); if (iType == Calendar.SECOND) return (int) ((lEnd - lBegin) / 1000L); if (iType == Calendar.MINUTE) return (int) ((lEnd - lBegin) / 60000L); if (iType == Calendar.HOUR) return (int) ((lEnd - lBegin) / 3600000L); if (iType == Calendar.DAY_OF_MONTH) { return (int) ((lEnd - lBegin) / 86400000L); } return -1; } /** * 添加天數或月份或年得到新的時間 * * @param strDate * @param count * @param dayType Calendar.YEAR * @return */ public static String getAddDateTime(String strDate, int count, int dayType) { Calendar cal = Calendar.getInstance(); cal.setTime(parseDate(strDate)); cal.add(dayType, count); SimpleDateFormat sdf = null; if ((dayType == Calendar.YEAR) || (dayType == Calendar.MONTH) || (dayType == Calendar.DAY_OF_MONTH)) sdf = new SimpleDateFormat(DATE_FORMAT); else sdf = new SimpleDateFormat(DATETIME_FORMAT); return sdf.format(cal.getTime()); } /** * 日期增加天數 * @param date * @param iCount * @return */ public static Date getAddDate(Date date, int iCount) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DAY_OF_MONTH, iCount); return cal.getTime(); } /** * 比較日期 * * @param dateStr1 * @param dateStr2 * @return */ public static int compareDate(String dateStr1, String dateStr2) { Date date1 = parseDate(dateStr1); Date date2 = parseDate(dateStr2); if (date1.getTime() > date2.getTime()) return -1; else if (date1.getTime() < date2.getTime()) return 1; else return 0; } public static int compareDate(Date date1, Date date2) { if (date1.getTime() > date2.getTime()) return -1; else if (date1.getTime() < date2.getTime()) return 1; else return 0; } /** * 時間差 * * @param startDate * @param endDate * @return */ public static int getDiffDays(Date startDate, Date endDate) { int days = 0; if (startDate.after(endDate)) { Date temp = startDate; startDate = endDate; endDate = temp; } days = (int) (endDate.getTime() - startDate.getTime()) / 1000 * 60 * 60 * 24; return days; } /** * 當前日期的后幾天 * * @param date * @param n * @return */ public static Date getAfterDay(Date date, int n) { Calendar c = Calendar.getInstance(); c.setTime(date); c.add(Calendar.DATE, n); return c.getTime(); } //---------獲取時間天數---------------------------------------------- /** * 獲取當前月的最后一天 * * @param dateStr * @return */ public static String getMonthEnd(String dateStr) { //當前第一天 Date date = parseDate(getMonthBegin(dateStr)); Calendar c = Calendar.getInstance(); c.setTime(date); c.add(Calendar.MONTH, 1); c.add(Calendar.DAY_OF_YEAR, -1); return formatDate(c.getTime()); } public static String getMonthEnd(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); c.set(Calendar.DATE, c.getActualMaximum(Calendar.DATE)); return formatDate(c.getTime()); } /** * 獲得當前日期的月份第一天 * * @param dateStr * @return */ public static String getMonthBegin(String dateStr) { Date date = parseDate(dateStr); return formatDate(date, "yyyy-MM") + 01; } public static String getMonthBegin(Date date) { return formatDate(date, "yyyy-MM") + 01; } //--------------格式化日期----------------------------------------- /** * 格式化日期為字符串 * * @param date * @param format * @return */ public static String formatDate(Date date, String format) { return new SimpleDateFormat(format).format(date); } public static String formatDate(Date date) { return formatDate(date, DATE_FORMAT); } public static String formateChinaDate(Date date) { return formatDate(date, CHINA_DATE_FORMAT); } public static String formateDateTime(Date date) { return formatDate(date, DATETIME_FORMAT); } public static String formateTime(Date date) { return formatDate(date, TIME_FORMAT); } //-----------------格式化字符串為日期-------------------------------------- /** * 格式化字符串為日期 * * @param date * @param format * @return */ public static Date parseDate(String date, String format) { try { return new SimpleDateFormat(format).parse(date); } catch (ParseException e) { e.printStackTrace(); } return null; } public static Date parseDate(String date) { return parseDate(date, DATE_FORMAT);} public static Date parseChinaDate(String date) { return parseDate(date, CHINA_DATE_FORMAT); } public static Date parseDateTime(String date) { return parseDate(date, DATETIME_FORMAT); } public static Date parseTime(String date) { return parseDate(date, TIME_FORMAT); } //---獲取年月日時分秒---------------------------------------------------- /** * 獲取年份 * * @param date * @return */ public static int getYear(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.YEAR); } /** * 獲取月份 * * @param date * @return */ public static int getMonth(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.MONTH) + 1; } /** * 獲取日 * * @param date * @return */ public static int getDay(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.DAY_OF_MONTH); } /** * 獲取星期 * * @param date * @return */ public static int getWeek(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.DAY_OF_WEEK); } /** * 獲取時間 * * @param date * @return */ public static int getHour(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.HOUR_OF_DAY); } /** * 獲取分種 * * @param date * @return */ public static int getMinute(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.MINUTE); } /** * 獲取秒 * * @param date * @return */ public static int getSecond(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.SECOND); } //--------------獲取星期幾--------------------------------------------------- /** * 獲取星期幾 * * @param strDate * @return */ public static String getWeekDayName(String strDate) { String[] mName = {"日", "一", "二", "三", "四", "五", "六"}; Date date = parseDate(strDate); int week = getWeek(date); return "星期" + mName[week]; } public static String getWeekDayName(Date date) { String[] mName = {"日", "一", "二", "三", "四", "五", "六"}; int week = getWeek(date); return "星期" + mName[week]; } /** * 一年中的星期幾 * @return */ public static int getWeekNumOfYear(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.get(Calendar.WEEK_OF_YEAR); } public static int getWeekNumOfYear(String date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(parseDate(date, DATE_FORMAT)); return calendar.get(Calendar.WEEK_OF_YEAR); } /** * 獲取本周星期一的日期 * @param yearNum * @param weekNum * @return * @throws ParseException */ public static String getYearWeekFirstDay(int yearNum, int weekNum) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, yearNum); cal.set(Calendar.WEEK_OF_YEAR, weekNum); cal.set(Calendar.DAY_OF_WEEK, 2); String tempYear = Integer.toString(yearNum); String tempMonth = Integer.toString(cal.get(Calendar.MONTH) + 1); String tempDay = Integer.toString(cal.get(Calendar.DAY_OF_MONTH)-1); return tempYear + "-" + tempMonth + "-" + tempDay; } /** * 獲取本周星期天的日期 * @param yearNum * @param weekNum * @return * @throws ParseException */ public static String getYearWeekEndDay(int yearNum, int weekNum) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, yearNum); cal.set(Calendar.WEEK_OF_YEAR, weekNum + 1); cal.set(Calendar.DAY_OF_WEEK, 1); String tempYear = Integer.toString(yearNum); String tempMonth = Integer.toString(cal.get(Calendar.MONTH) + 1); String tempDay = Integer.toString(cal.get(Calendar.DAY_OF_MONTH)-1); return tempYear + "-" + tempMonth + "-" + tempDay; } //--------------獲取天數--------------------------------------------------- /** * 獲取某年某月的第一天 * @param yearNum * @param monthNum * @return */ public static Date getYearMonthFirstDay(int yearNum, int monthNum) { Calendar cal = Calendar.getInstance(); cal.set(yearNum, monthNum - 1, 1, 0, 0, 0); cal.set(14, 0); return cal.getTime(); } /** * 獲取某年下個月的第一天 * @param yearNum * @param monthNum * @return */ public static Date getNextYearMonthFirstDay(int yearNum, int monthNum) { Calendar cal = Calendar.getInstance(); cal.set(yearNum, monthNum, 1, 0, 0, 0); cal.set(14, 0); return cal.getTime(); } /** * 獲取某年某月的最后一天 * @param yearNum * @param monthNum * @return */ public static Date getYearMonthEndDay(int yearNum, int monthNum) { Calendar cal = Calendar.getInstance(); cal.set(yearNum, monthNum, 0, 0, 0, 0); cal.set(14, 0); return cal.getTime(); } /** * 獲取某月的第一天 * @param date * @return */ public static Date getYearMonthFirstDay(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.set(5, 1); cal.set(11, 0); cal.set(12, 0); cal.set(13, 0); cal.set(14, 0); return cal.getTime(); } /** * 獲取下一年的第一天 * @param date * @return */ public static Date getNextYearMonthFirstDay(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(2, 1); cal.set(5, 1); cal.set(11, 0); cal.set(12, 0); cal.set(13, 0); cal.set(14, 0); return cal.getTime(); } /** * 獲取當前月的最后一天 * @param date * @return */ public static Date getYearMonthEndDay(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.set(5, cal.getActualMaximum(5)); cal.set(11, 0); cal.set(12, 0); cal.set(13, 0); cal.set(14, 0); return cal.getTime(); } /** * 獲取當年的第一天 * @param yearNum * @return */ public static Date getYearFirstDay(int yearNum) { Calendar cal = Calendar.getInstance(); cal.set(yearNum, 0, 1, 0, 0, 0); cal.set(14, 0); return cal.getTime(); } /** * 獲取下一年的第一天 * @param yearNum * @return */ public static Date getNextYearFirstDay(int yearNum) { Calendar cal = Calendar.getInstance(); cal.set(yearNum, 12, 1, 0, 0, 0); cal.set(14, 0); return cal.getTime(); } /** * 獲取當年的最后一天 * @param yearNum * @return */ public static Date getYearEndDay(int yearNum) { Calendar cal = Calendar.getInstance(); cal.set(yearNum, 12, 0, 0, 0, 0); cal.set(14, 0); return cal.getTime(); } /** * 獲取當前星期 * @param strDate * @param weekNum * @return */ public static String getWeek(String strDate, int weekNum) { Calendar c = Calendar.getInstance(); c.setTime(parseDate(strDate)); if (weekNum == 1) c.set(7, 2); else if (weekNum == 2) c.set(7, 3); else if (weekNum == 3) c.set(7, 4); else if (weekNum == 4) c.set(7, 5); else if (weekNum == 5) c.set(7, 6); else if (weekNum == 6) c.set(7, 7); else if (weekNum == 0) c.set(7, 1); return formatDate(c.getTime()); } public static Date getWeek(Date date, int weekNum) { Calendar c = Calendar.getInstance(); c.setTime(date); if (weekNum == 1) c.set(7, 2); else if (weekNum == 2) c.set(7, 3); else if (weekNum == 3) c.set(7, 4); else if (weekNum == 4) c.set(7, 5); else if (weekNum == 5) c.set(7, 6); else if (weekNum == 6) c.set(7, 7); else if (weekNum == 0) c.set(7, 1); return c.getTime(); } /** * 下個月日期 * @param date * @return */ public static Date getNextMonday(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); do c.add(Calendar.DAY_OF_MONTH, 1); while (c.get(Calendar.DAY_OF_WEEK) != 2); return c.getTime(); } /** * 獲得某一日期的前一天 * */ public static Date getPreviousDate(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DATE, -1); calendar.set(Calendar.HOUR, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.MILLISECOND, 0); return getSqlDate(calendar.getTime()); } /** * 獲得某年某月最后一天的日期 * */ public static Date getLastDayOfMonth(int year, int month) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month); calendar.set(Calendar.DATE, 1); return getPreviousDate(getSqlDate(calendar.getTime())); } /** * 獲取一個月的天數 * @param year * @param month * @return */ public static int getDaysInMonth(int year, int month) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, month - 1);// Java月份才0開始算 return cal.getActualMaximum(Calendar.DATE); } //----------------根據用戶生日計算年齡------------------------------------------------- /** * 根據用戶生日計算年齡 */ public static int getAgeByBirthday(Date birthday) { Calendar cal = Calendar.getInstance(); if (cal.before(birthday)) { throw new IllegalArgumentException("The birthDay is before Now.It's unbelievable!"); } int yearNow = cal.get(Calendar.YEAR); int monthNow = cal.get(Calendar.MONTH) + 1; int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); cal.setTime(birthday); int yearBirth = cal.get(Calendar.YEAR); int monthBirth = cal.get(Calendar.MONTH) + 1; int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH); int age = yearNow - yearBirth; if (monthNow <= monthBirth) { if (monthNow == monthBirth) { if (dayOfMonthNow < dayOfMonthBirth) { age--; } } else { age--; } } return age; } /** * 由java.util.Date到java.sql.Date的類型轉換 * */ public static Date getSqlDate(java.util.Date date) { return new Date(date.getTime()); } public static void main(String[] args) { //dd System.out.println("億速云測試結果:"); System.out.println("2017年 2月最后一天日期為:"+getLastDayOfMonth(2017, 2)); System.out.println("2017年第一天日期為:"+getYearFirstDay(2017)); System.out.println("2017年最后一天日期為:"+getYearEndDay(2017)); } }
運行結果:
1. 簡單,只需理解基本的概念,就可以編寫適合于各種情況的應用程序;2. 面向對象;3. 分布性,Java是面向網絡的語言;4. 魯棒性,java提供自動垃圾收集來進行內存管理,防止程序員在管理內存時容易產生的錯誤。;5. 安全性,用于網絡、分布環境下的Java必須防止病毒的入侵。6. 體系結構中立,只要安裝了Java運行時系統,就可在任意處理器上運行。7. 可移植性,Java可以方便地移植到網絡上的不同機器。8.解釋執行,Java解釋器直接對Java字節碼進行解釋執行。
關于“Java日期操作方法工具類的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。