中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java日期操作方法工具類的示例分析

發布時間:2021-05-25 09:32:00 來源:億速云 閱讀:191 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關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)); }
}

運行結果:

Java日期操作方法工具類的示例分析

Java的優點是什么

1. 簡單,只需理解基本的概念,就可以編寫適合于各種情況的應用程序;2. 面向對象;3. 分布性,Java是面向網絡的語言;4. 魯棒性,java提供自動垃圾收集來進行內存管理,防止程序員在管理內存時容易產生的錯誤。;5. 安全性,用于網絡、分布環境下的Java必須防止病毒的入侵。6. 體系結構中立,只要安裝了Java運行時系統,就可在任意處理器上運行。7. 可移植性,Java可以方便地移植到網絡上的不同機器。8.解釋執行,Java解釋器直接對Java字節碼進行解釋執行。

關于“Java日期操作方法工具類的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天门市| 专栏| 安泽县| 乐陵市| 鹤壁市| 周口市| 桐城市| 德令哈市| 五家渠市| 潼关县| 七台河市| 和硕县| 永定县| 青龙| 永泰县| 祁连县| 洮南市| 定边县| 清徐县| 嘉善县| 聊城市| 当涂县| 竹溪县| 清流县| 句容市| 镇江市| 银川市| 昂仁县| 都江堰市| 八宿县| 丰顺县| 武汉市| 门头沟区| 张掖市| 万宁市| 武夷山市| 稷山县| 玛纳斯县| 淳化县| 赣榆县| 什邡市|