温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2021-05-25 09:32:00 来源:亿速云 阅读:243 作者:小新 栏目:编程语言

这篇文章将为大家详细讲解有关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