Java工具类DateUtils实例详解

作者:Godliness丶 时间:2022-08-22 00:40:35 

本文实例为大家分享了Java工具类DateUtils的具体代码,供大家参考,具体内容如下


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 描述:公共日期工具类
*/
public class DateUtils {

public static String DATE_FORMAT = "yyyy-MM-dd";

public static String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";

public static String DATE_FORMAT_CHINESE = "yyyy年M月d日";

/**
  * 获取当前日期
  *
  *
  * @return
  *
  */
 public static String getCurrentDate() {
   String datestr = null;
   SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_FORMAT);
   datestr = df.format(new Date());
   return datestr;
 }

/**
  * 获取当前日期时间
  *
  *
  * @return
  *
  */
 public static String getCurrentDateTime() {
   String datestr = null;
   SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_TIME_FORMAT);
   datestr = df.format(new Date());
   return datestr;
 }

/**
  * 获取当前日期时间
  *
  *
  * @return
  *
  */
 public static String getCurrentDateTime(String Dateformat) {
   String datestr = null;
   SimpleDateFormat df = new SimpleDateFormat(Dateformat);
   datestr = df.format(new Date());
   return datestr;
 }

public static String dateToDateTime(Date date) {
   String datestr = null;
   SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_TIME_FORMAT);
   datestr = df.format(date);
   return datestr;
 }
 /**
  * 将字符串日期转换为日期格式
  *
  *
  * @param datestr
  * @return
  *
  */
 public static Date stringToDate(String datestr) {

if(datestr ==null ||datestr.equals("")){
       return null;
     }
   Date date = new Date();
   SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_FORMAT);
   try {
     date = df.parse(datestr);
   } catch (ParseException e) {
     date=DateUtils.stringToDate(datestr,"yyyyMMdd");
   }
   return date;
 }

/**
  * 将字符串日期转换为日期格式
  * 自定義格式
  *
  * @param datestr
  * @return
  *
  */
 public static Date stringToDate(String datestr, String dateformat) {
   Date date = new Date();
   SimpleDateFormat df = new SimpleDateFormat(dateformat);
   try {
     date = df.parse(datestr);
   } catch (ParseException e) {
     e.printStackTrace();
   }
   return date;
 }

/**
  * 将日期格式日期转换为字符串格式
  *
  *
  * @param date
  * @return
  *
  */
 public static String dateToString(Date date) {
   String datestr = null;
   SimpleDateFormat df = new SimpleDateFormat(DateUtils.DATE_FORMAT);
   datestr = df.format(date);
   return datestr;
 }

/**
  * 将日期格式日期转换为字符串格式 自定義格式
  *
  * @param date
  * @param dateformat
  * @return
  */
 public static String dateToString(Date date, String dateformat) {
   String datestr = null;
   SimpleDateFormat df = new SimpleDateFormat(dateformat);
   datestr = df.format(date);
   return datestr;
 }

/**
  * 获取日期的DAY值
  *
  *
  * @param date
  *      输入日期
  * @return
  *
  */
 public static int getDayOfDate(Date date) {
   int d = 0;
   Calendar cd = Calendar.getInstance();
   cd.setTime(date);
   d = cd.get(Calendar.DAY_OF_MONTH);
   return d;
 }

/**
  * 获取日期的MONTH值
  *
  *
  * @param date
  *      输入日期
  * @return
  *
  */
 public static int getMonthOfDate(Date date) {
   int m = 0;
   Calendar cd = Calendar.getInstance();
   cd.setTime(date);
   m = cd.get(Calendar.MONTH) + 1;
   return m;
 }

/**
  * 获取日期的YEAR值
  *
  *
  * @param date
  *      输入日期
  * @return
  *
  */
 public static int getYearOfDate(Date date) {
   int y = 0;
   Calendar cd = Calendar.getInstance();
   cd.setTime(date);
   y = cd.get(Calendar.YEAR);
   return y;
 }

/**
  * 获取星期几
  *
  *
  * @param date
  *      输入日期
  * @return
  *
  */
 public static int getWeekOfDate(Date date) {
   int wd = 0;
   Calendar cd = Calendar.getInstance();
   cd.setTime(date);
   wd = cd.get(Calendar.DAY_OF_WEEK) - 1;
   return wd;
 }

/**
  * 获取输入日期的当月第一天
  *
  *
  * @param date
  *      输入日期
  * @return
  *
  */
 public static Date getFirstDayOfMonth(Date date) {
   Calendar cd = Calendar.getInstance();
   cd.setTime(date);
   cd.set(Calendar.DAY_OF_MONTH, 1);
   return cd.getTime();
 }

/**
  * 获得输入日期的当月最后一天
  *
  * @param date
  */
 public static Date getLastDayOfMonth(Date date) {
   return DateUtils.addDay(DateUtils.getFirstDayOfMonth(DateUtils.addMonth(date, 1)), -1);
 }

/**
  * 判断是否是闰年
  *
  *
  * @param date
  *      输入日期
  * @return 是true 否false
  *
  */
 public static boolean isLeapYEAR(Date date) {

Calendar cd = Calendar.getInstance();
   cd.setTime(date);
   int year = cd.get(Calendar.YEAR);

if (year % 4 == 0 && year % 100 != 0 | year % 400 == 0) {
     return true;
   } else {
     return false;
   }
 }

/**
  * 根据整型数表示的年月日,生成日期类型格式
  *
  * @param year
  *      年
  * @param month
  *      月
  * @param day
  *      日
  * @return
  *
  */
 public static Date getDateByYMD(int year, int month, int day) {
   Calendar cd = Calendar.getInstance();
   cd.set(year, month-1, day);
   return cd.getTime();
 }

/**
  * 获取年周期对应日
  *
  * @param date
  *      输入日期
  * @param iyear
  *      年数  負數表示之前
  * @return
  *
  */
 public static Date getYearCycleOfDate(Date date, int iyear) {
   Calendar cd = Calendar.getInstance();
   cd.setTime(date);

cd.add(Calendar.YEAR, iyear);

return cd.getTime();
 }

/**
  * 获取月周期对应日
  *
  * @param date
  *      输入日期
  * @param i
  * @return
  *
  */
 public static Date getMonthCycleOfDate(Date date, int i) {
   Calendar cd = Calendar.getInstance();
   cd.setTime(date);

cd.add(Calendar.MONTH, i);

return cd.getTime();
 }

/**
  * 计算 fromDate 到 toDate 相差多少年
  *
  * @param fromDate
  * @param toDate
  * @return 年数
  *
  */
 public static int getYearByMinusDate(Date fromDate, Date toDate) {
   Calendar df=Calendar.getInstance();
   df.setTime(fromDate);

Calendar dt=Calendar.getInstance();
   dt.setTime(toDate);

return dt.get(Calendar.YEAR)-df.get(Calendar.YEAR);
 }

/**
  * 计算 fromDate 到 toDate 相差多少个月
  *
  * @param fromDate
  * @param toDate
  * @return 月数
  *
  */
 public static int getMonthByMinusDate(Date fromDate, Date toDate) {
   Calendar df=Calendar.getInstance();
   df.setTime(fromDate);

Calendar dt=Calendar.getInstance();
   dt.setTime(toDate);

return dt.get(Calendar.YEAR)*12+dt.get(Calendar.MONTH)-
       (df.get(Calendar.YEAR)*12+df.get(Calendar.MONTH));
 }

/**
  * 计算 fromDate 到 toDate 相差多少天
  *
  * @param fromDate
  * @param toDate
  * @return 天数
  *
  */
 public static long getDayByMinusDate(Object fromDate, Object toDate) {

Date f=DateUtils.chgObject(fromDate);

Date t=DateUtils.chgObject(toDate);

long fd=f.getTime();
   long td=t.getTime();

return (td-fd)/(24L * 60L * 60L * 1000L);
 }

/**
  * 计算年龄
  *
  * @param birthday
  *      生日日期
  * @param calcDate
  *      要计算的日期点
  * @return
  *
  */
 public static int calcAge(Date birthday, Date calcDate) {

int cYear=DateUtils.getYearOfDate(calcDate);
   int cMonth=DateUtils.getMonthOfDate(calcDate);
   int cDay=DateUtils.getDayOfDate(calcDate);  
   int bYear=DateUtils.getYearOfDate(birthday);
   int bMonth=DateUtils.getMonthOfDate(birthday);
   int bDay=DateUtils.getDayOfDate(birthday);

if(cMonth>bMonth||(cMonth==bMonth&&cDay>bDay)){
     return cYear-bYear;
   }else{
     return cYear-1-bYear;
   }
 }

/**
  * 从身份证中获取出生日期
  *
  * @param idno
  *      身份证号码
  * @return
  *
  */
 public static String getBirthDayFromIDCard(String idno) {
   Calendar cd = Calendar.getInstance();
   if (idno.length() == 15) {
     cd.set(Calendar.YEAR, Integer.valueOf("19" + idno.substring(6, 8))
         .intValue());
     cd.set(Calendar.MONTH, Integer.valueOf(idno.substring(8, 10))
         .intValue() - 1);
     cd.set(Calendar.DAY_OF_MONTH,
         Integer.valueOf(idno.substring(10, 12)).intValue());
   } else if (idno.length() == 18) {
     cd.set(Calendar.YEAR, Integer.valueOf(idno.substring(6, 10))
         .intValue());
     cd.set(Calendar.MONTH, Integer.valueOf(idno.substring(10, 12))
         .intValue() - 1);
     cd.set(Calendar.DAY_OF_MONTH,
         Integer.valueOf(idno.substring(12, 14)).intValue());
   }
   return DateUtils.dateToString(cd.getTime());
 }

/**
  * 在输入日期上增加(+)或减去(-)天数
  *
  * @param date
  *      输入日期
  * @param imonth
  *      要增加或减少的天数
  */
 public static Date addDay(Date date, int iday) {
   Calendar cd = Calendar.getInstance();

cd.setTime(date);

cd.add(Calendar.DAY_OF_MONTH, iday);

return cd.getTime();
 }

/**
  * 在输入日期上增加(+)或减去(-)月份
  *
  * @param date
  *      输入日期
  * @param imonth
  *      要增加或减少的月分数
  */
 public static Date addMonth(Date date, int imonth) {
   Calendar cd = Calendar.getInstance();

cd.setTime(date);

cd.add(Calendar.MONTH, imonth);

return cd.getTime();
 }

/**
  * 在输入日期上增加(+)或减去(-)年份
  *
  * @param date
  *      输入日期
  * @param imonth
  *      要增加或减少的年数
  */
 public static Date addYear(Date date, int iyear) {
   Calendar cd = Calendar.getInstance();

cd.setTime(date);

cd.add(Calendar.YEAR, iyear);

return cd.getTime();
 }

/**
  * 將OBJECT類型轉換為Date
  * @param date
  * @return
  */
 public static Date chgObject(Object date){

if(date!=null&&date instanceof Date){
     return (Date)date;
   }

if(date!=null&&date instanceof String){
     return DateUtils.stringToDate((String)date);
   }

return null;

}

public static long getAgeByBirthday(String date){

Date birthday = stringToDate(date, "yyyy-MM-dd");
   long sec = new Date().getTime() - birthday.getTime();

long age = sec/(1000*60*60*24)/365;

return age;
 }

/**
  * @param args
  */
 public static void main(String[] args) {
   //String temp = DateUtil.dateToString(getLastDayOfMonth(new Date()),
   ///   DateUtil.DATE_FORMAT_CHINESE);
   //String s=DateUtil.dateToString(DateUtil.addDay(DateUtil.addYear(new Date(),1),-1));

long s=DateUtils.getDayByMinusDate("2012-01-01", "2012-12-31");
   System.err.println(s);

}

}

来源:http://blog.csdn.net/qq_878799579/article/details/74784430

标签:Java,工具类,DateUtils
0
投稿

猜你喜欢

  • Java受检异常的一些思考

    2021-06-08 08:22:16
  • springboot schedule 解决定时任务不执行的问题

    2021-05-30 05:00:38
  • java使用Jsoup组件生成word文档

    2022-10-28 12:44:16
  • mybatis if标签判断不生效的解决方法

    2023-11-28 12:30:49
  • Java实现批量导入excel表格数据到数据库中的方法

    2021-06-22 07:39:49
  • C# WinForm 判断程序是否已经在运行,且只允许运行一个实例,附源码

    2021-11-06 14:10:07
  • java与JSON数据的转换实例详解

    2022-07-03 22:48:25
  • 详解spring中的Aware接口功能

    2023-07-02 00:36:01
  • 浅谈Spring-cloud 之 sleuth 服务链路跟踪

    2022-09-24 16:07:43
  • springcloud Zuul动态路由的实现

    2021-10-07 06:15:40
  • JAVA实现经典扫雷游戏的示例代码

    2022-01-26 04:20:18
  • Java中的stream流的概念解析及实际运用总结

    2022-06-10 23:19:10
  • Jenkins一键打包部署SpringBoot应用

    2022-08-03 16:37:18
  • Java中驼峰命名与下划线命名相互转换

    2021-10-01 00:56:47
  • java简单坦克大战制作代码

    2023-02-07 05:08:37
  • j2ee之AJAX二级联动效果

    2021-09-13 10:06:58
  • Java京东面试题之为什么HashMap线程不安全

    2022-12-06 07:20:02
  • 用SpringBoot+Vue+uniapp小程序实现在线房屋装修管理系统

    2023-11-12 04:10:48
  • SpringBoot工程打包与运行的实现详解

    2023-11-10 23:51:28
  • 全面分析Java文件上传

    2021-12-09 13:22:52
  • asp之家 软件编程 m.aspxhome.com